通过ADO.NET访问Sybase ASE 15.5数据库datetime字段的小问题

本文介绍在ASE15.5数据库中使用ADO.NET插入数据遇到的问题及解决方法。由于时间格式改动,使用DateTime.Now会导致插入失败。提供两种解决思路:使用DateTime.Today或通过字符串解析。

假设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")代替,用字符串解析的方法得到年月日以及时分秒时间。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值