暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

GBASE使用预处理语句的优点

郑小雯 2023-07-05
109

使用预处理语句的优点

预处理执行比多次直接执行语句要快得多,主要是因为查询只被解析一次。 而在直接执行时,查询在每次执行时都要被解析。 下面列举了预处理语句的主要优点: 1) 预处理语句的执行方式减低网络流量。 因为每次对预处理语句的执行只需发送与参数相关的数据,所以该执行方 式减低网络流量。 2) 提高了客户端和服务器之间的数据传输效率。 因为预处理语句是在客户端和服务器之间的传输过程中使用二进制协议, 提高了客户端和服务器之间的数据传输效率。


使用 GBase ADO.NET 处理日期和时间信息

GBase 数据库和.NET 语言处理日期和时间信息的方式是不同的,GBase 数据 库允许的日期有时不能用一个.NET 的数据类型表示,比如“0000-00-00 00:00:00”。如果处理不当,则会产生问题。 在本章节中,我们将说明在使用 GBase ADO.NET 时如何正确处理日期和时 间信息。


 使用无效日期的问题

由于 GBase 数据库允许“0000-00-00”日期值存储到 Date 类型字段, “0000-00-00 00:00:00”和 NULL 时间日期值存储到 DateTime 类型,但这些日 期值都是无效的,.NET 框架的日期对象和日期时间对象不支持这些值。对于使 用无效日期的开发人员,日期处理上的差异可能产生问题。 因此.NET DataSet 对象不能使用 GBaseDataAdapter 类的 Fill 方法填充, 因为无效日期的转换将会引发 System.ArgumentOutOfRangeException 异常。  


解决无效日期的方法

解决无效日期的方法有如下三种:限制无效日期、处理无效日期和处理 NULL 日期。


限制无效日期

日期问题的最好解决办法是限制用户输入无效日期,该方法可以在客户端 或服务器端任何一方实现。 1) 客户端实现: .NET Framework 为应用程序提供了日期控件,当应用程序需要输入日期时 使用日期控件完成输入。 2) 服务器端实现: 日期数据进入数据库时都可通过存储过程完成,无效日期的限制在存储过 程中完成。


处理无效日期

GBaseDateTime 数据类型支持 GBase 数据库支持的相同日期值,缺省情况下GBaseDataReader.GetValue()方法会为有效日期值返回一个.NET DateTime 对 象,并且会为无效日期返回一个错误。可以更改这个缺省方式,让 GBaseDataReader.GetValue() 对于无效日期也返回一个 GBaseDateTime 对象。 要想使 GBase ADO.NET 为无效日期也返回一个 GBaseDateTime 对象,需要 在连接字符串中增加下面的键/值对: Allow Zero Datetime=True 注意:使用 GBaseDateTime 类仍然可能产生问题,下面有一些结论:

 无效日期的数据绑定仍然可能产生错误(0000-00-00 零日期不会产生 错误),如:2012-13-35;

 ToString 方法返回按标准 GBase 数据库格式处理的日期(例如, 2005-02-23 08:50:25),这与.NET DateTime 类的 ToString 不同;

 GBaseDateTime 类支持 NULL 日期,但是.NET DateTime 类不支持。如 事先不检查 NULL 就把一个 GBaseDateTime 转换为一个 DateTime 时, 会产生错误。


处理 NULL 日期

NET 的 DateTime 数据类型不支持 NULL 值,在查询中为 DateTime 类型变量 赋值时,必须首先检查该值是否为 NULL。使用 GBaseDataReader 得到 DateTime 列数据时,应在将获取到的值赋值给 DateTime 变量前用 IsDBNull 方法检查数 据是否值为 NULL,如下面的样例代码中所示。 C# 示例: if (! gsReader.IsDBNull(gsReader.GetOrdinal("gstime"))) gsTime = gsReader.GetDateTime(gsReader.GetOrdinal("gstime")); else gsTime = DateTime.MinValue; 

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论