假设ASE 15.5数据库中存在一张表Talk,表有三个字段Id,Name,Time,类型分别为int,varchar(255),datetime。现在需要往数据库中插入一条记录,使用ado.net编程的话,示例代码如下:
代码并不复杂,先用AseConnection建立连接,打开连接。然后创建AseCommand,绑定参数。最后执行,打印插入数据的行数,应该得到1。
实际上,代码执行返回的结果是0,查看数据库也发现没有记录被插入。
问题出在DateTime.Now上,可能是因为ASE 15.5相比较15.0在时间格式上做了改动,提高了时间精度,导致Data Provider处理出错。这段代码在访问ASE 15.0.3数据库时运行正常。
在Data Provider修正这个bug之前,至少有两个work around的办法:
1. 使用DateTime.Today代替DateTime.Now,保存年月日时间。
2. 使用DateTime.Parse("2010-12-9 22:22:22")代替,用字符串解析的方法得到年月日以及时分秒时间。
本文介绍在ASE15.5数据库中使用ADO.NET插入数据遇到的问题及解决方法。由于时间格式改动,使用DateTime.Now会导致插入失败。提供两种解决思路:使用DateTime.Today或通过字符串解析。

被折叠的 条评论
为什么被折叠?



