Welcome 微信登录

首页 / 数据库 / MySQL / 一个关于Oracle更新语句引发的时间字段类型的问题

想当初我在做一个ASP.NET网站的时候,用的是Oracle数据库更新数据。表里面的字段有int类型的,string类型的,还有date类型的,在和asp.NET前台控件绑定更新的时候总是出现问题,我当时上网查了好多东西,总是看的模棱两可,毕竟也是头一次接触操作Oracle。我把我最初写的更新贴出来(现在这个问题已经解决了),你们看看:更新语句如下:sql = string.Format("update xxt_registration r set r.name="{0}",r.ip="{1}",r.port="{2}",r.time="{3}",r.location="{4}",r.installtime="{5}",r.type=(select d.id from xxt_devicetype d where d.name="{6}") where r.id="{7}"",

this.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("2013-05-17 16:55");insert into test_time values("2013-05-17 16:55") *ERROR 位于第 1 行:ORA-01861: 文字与格式字符串不匹配SQL> insert into test_time values("2013-05-17 16:55:30");insert into test_time values("2013-05-17 16:55:30") *ERROR 位于第 1 行:ORA-01861: 文字与格式字符串不匹配SQL> insert into test_time values(TO_DATE("2013-05-17 16:55:30", "YYYY-MM-DD HH24:MI:SS") );已创建 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 = string.Format("update xxt_registration r set r.name="{0}",r.ip="{1}",r.port="{2}",r.location="{3}",r.installtime=to_date("{4}","yyyy-mm-dd"),r.type=(select d.id from xxt_devicetype d where d.name="{5}") where r.id={6}",this.txtname.Text.Trim(), this.txtip.Text.Trim(), this.txtport.Text.Trim(), this.txtlocation.Text.Trim(), this.Calendarinstalltime.SelectedDate.ToString("yyyy-MM-dd"), this.DropDownList_tname.Text.Trim(), this.txtid.Text.Trim());最后,如果您还需要Oracle中TO_DATE格式的其它解答,下面的链接地址有详细的解说,相信一定能帮助您的。 http://www.linuxidc.com/Linux/2013-06/85874.htm更多Oracle相关信息见Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12浅谈从Oracle数据库中取出10条数据的Select语句与SQL Server、MySQL的区别Oracle免安装 PL/SQL连接相关资讯      Oracle字段类型 
  • Oracle通过字段类型查询字段  (04/22/2015 21:41:54)
  • Oracle数据库设计字段类型选择错误  (09/15/2014 20:57:27)
  • Oracle中已有数据的字段类型修改  (03/17/2013 15:17:43)
  • Oracle字段类型设计与实际业务不符  (09/15/2014 21:00:01)
  • Oracle修改字段类型方法总结  (04/16/2014 04:18:56)
  • Oracle 修改带数据的字段类型  (02/01/2013 13:46:53)
本文评论 查看全部评论 (0)
表情: 姓名: 字数