视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
一个关于Oracle更新语句引发的时间字段类型的问题
2020-11-09 10:46:12 责编:小采
文档


想当初我在做一个ASP.NET网站的时候,用的是Oracle数据库更新数据。表里面的字段有int类型的,string类型的,还有date类型的,在

想当初我在做一个ASP.NET网站的时候,用的是Oracle数据库更新数据。表里面的字段有int类型的,string类型的,还有date类型的,在和asp.NET前台控件绑定更新的时候总是出现问题,我当时上网查了好多东西,总是看的模棱两可,,毕竟也是头一次接触操作Oracle。我把我最初写的更新贴出来(现在这个问题已经解决了),你们看看:

更新语句如下: sql = .txtname.Text.Trim(), this.txtip.Text.Trim(), this.txtport.Text.Trim(), this.txttime.Text.Trim(), this.txtlocation.Text.Trim(), this.txtinstalltime.Text.Trim(), this.DropDownList_tname.Text.Trim(), this.txtid.Text.Trim());

首先,出现的问题就是“类型”与“单引号”的问题,报的错误是,如下图:

这个错误是,ORA-01861: 文字与格式字符串不匹配。

可能是因为你那个表里面的time这一列,数据类型是date类型的。

你传递一个字符格式的内容进去以后,数据库不知道如何格式化这个字符信息为日期。

下面是一个网友提供的,错误重现的例子与解决的办法。在这里非常感谢他的热心帮助

SQL> create table test_time( time date ); 表已创建。 SQL> insert into test_time values(); insert into test_time values() * ERROR 位于第 1 行: ORA-01861: 文字与格式字符串不匹配 SQL> insert into test_time values(); insert into test_time values() * ERROR 位于第 1 行: ORA-01861: 文字与格式字符串不匹配 SQL> insert into test_time values( TO_DATE(, ) ); 已创建 1 行。

对于上面的更新语句,我总结如下:

string类型的可以加单引号,像r.name='{0}',r.ip='{1}',r.port='{2}'等等都是可以的;

int类型的在Oracle数据库更新语句中是不能加单引号的,像id='{7}'是不行的,应该去掉单引号改为id={7};

date类型可以加单引号,但不是像r.time='{3}'这样的,应该应用TO_DATE()来转换格式,如:r.time=to_date('{3}','yyyy-mm-dd')。asp.net前台控件中输入的是字符串类型的数据,更新的时候当然要转换成时间类型格式的,修改后的更新语句如下:

sql = , ), this.DropDownList_tname.Text.Trim(), this.txtid.Text.Trim());

最后,如果您还需要Oracle中TO_DATE格式的其它解答,下面的链接地址有详细的解说,相信一定能帮助您的。

下载本文
显示全文
专题