CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  VCL组件开发及应用

SQL问题--Update出错!!!时间和字符串转换的问题!!!!

楼主CunningBoy(南迁的候鸟)2003-11-03 23:21:46 在 Delphi / VCL组件开发及应用 提问

if   FormMain.ADOConnection1.Connected   then  
      begin  
          with   FormMain.ADOQuery4   do  
          begin  
              if   Active   then  
                  Close;  
   
              SQL.Clear;  
                SQL.Add('UPDATE   Information   SET');  
              SQL.Add('Time='   +   DateTimeToStr(StrToDateTime(FormatDateTime('yyyy-mm-dd   hh:nn:ss',   Now)))   +     ',');  
  //             SQL.Add('Time='   +   DateTimeToStr(Now)   +   ',');  
              SQL.Add('CH4Concent='   +   FloatToStr(concent)   +   ',');  
              SQL.Add('pressure='   +   FloatToStr(pressure)   +   ',');  
              SQL.Add('tfl='   +   FloatToStr(tfl));  
              SQL.Add('WHERE'   +'(CoalID='     +   #39   +   coalid   +   #39   +   ')   And'   +   '(WorkID='     +   #39   +   workid   +   #39   +   ')   And'   +   '(DeviceID='   +   #39   +   deviceid   +   #39   +   ')');  
   
              try  
                  ExecSQL;  
              except  
                  exit;  
              end;  
   
          end;  
      end;  
   
  程序运行后出错:  
  Project   Safty.exe   are   raised   exception   class   EoleException   with   message   'Parameter   对象被不正确的定义。提供了不一致或不完整的信息。'       Process   stopped.   Use   Step   or   Run   to   continue  
   
  请各位大虾帮帮忙看看该如何修改!  
  我用单步调试时,发现是SQL.Add('Time='   +   DateTimeToStr(StrToDateTime(FormatDateTime('yyyy-mm-dd   hh:nn:ss',   Now)))   +     ',')这句的问题。 问题点数:100、回复次数:16Top

1 楼oklida(JAVA战士)回复于 2003-11-03 23:29:18 得分 5

不如改成   SQL.Add('Time=getdate()')Top

2 楼oklida(JAVA战士)回复于 2003-11-03 23:31:58 得分 10

如果你的数据库是SQL   Server   就用getdate()  
  是ORACLE就用SYSDATETop

3 楼angelface(§<@#$&^%$>§)回复于 2003-11-04 08:37:26 得分 0

upTop

4 楼wrydao(一刀)回复于 2003-11-04 08:39:53 得分 10

用getdate()或用参数:time  
  SQL.Add(':Time‘);  
  adoquery1.parameters.parambyname('time').value:=StrToDateTime(FormatDateTime('yyyy-mm-dd   hh:nn:ss',   Now));Top

5 楼CunningBoy(南迁的候鸟)回复于 2003-11-04 08:45:05 得分 0

我用的数据库是Access,请问该如何处理?Top

6 楼LKJ99(路是人走的,命是天定的)回复于 2003-11-04 08:57:19 得分 10

我试过,  
   
  时间参数加引号:  
  SQL.Add('Time='   +   #39   +   DateTimeToStr(StrToDateTime(FormatDateTime('yyyy-mm-dd   hh:nn:ss',   Now)))   +   #39   +   ',');  
  Top

7 楼yurenjf(Never)回复于 2003-11-04 09:04:51 得分 5

同意楼上所言,时间要加引号的Top

8 楼hongjg(阿谷)回复于 2003-11-04 09:07:40 得分 10

值使用参数传递,一般不会有错:  
  AdoQuery1.Parameters.ParamByName('time').Value:=StrToDateTime(FormatDateTime('yyyy-mm-dd   hh:nn:ss',   Now));  
  Top

9 楼hongjg(阿谷)回复于 2003-11-04 09:09:14 得分 10

我上面的错了,应该直接传递数据库中的字段的类型的值。AdoQuery1.Parameters.ParamByName('time').Value   :=   Now;Top

10 楼suwen88(龙的传人)回复于 2003-11-04 09:11:23 得分 5

按楼上说的吧,用参数吧Top

11 楼fhuibo(永远深爱一个叫“莎”的好女孩儿)回复于 2003-11-04 09:12:57 得分 5

getdate()   只是取日期的还是用fromatdatetime好Top

12 楼CunningBoy(南迁的候鸟)回复于 2003-11-04 09:36:19 得分 0

我加上引号后,还是出错,提示说“UPDATE   语句   语法错误”Top

13 楼gmc007(江西的佬表)回复于 2003-11-04 09:48:14 得分 20

在ACCESS中   日期时间   是用   #   号括起来的  
   
  Top

14 楼CunningBoy(南迁的候鸟)回复于 2003-11-04 20:58:07 得分 0

我用的是ACCESS,改成这个语句:  
  SQL.Add('Time=#'   +   DateTimeToStr(StrToDateTime(FormatDateTime('yyyy-mm-dd   hh:nn:ss',   Now)))   +     '#,');  
  还是不行,提示出错:  
  Project   Safty.exe   are   raised   exception   class   EoleException   with   message   'Parameter   对象被不正确的定义。提供了不一致或不完整的信息。'       Process   stopped.   Use   Step   or   Run   to   continueTop

15 楼CunningBoy(南迁的候鸟)回复于 2003-11-05 20:14:11 得分 0

帮帮我吧,我的头都大了……Top

16 楼scsdljb(阿罗)回复于 2003-11-05 21:47:51 得分 10

如果是SQL2000则在代入日期变量时这样的  
  SQL.Add('update   table1   set   field_time   =   '''   +   FormatDateTime('yyyy-mm-mm   hh:ss:mm',now)   +   '''   ');  
  这样就没有问题了吧.这个问题我曾经也遇到过,不过有时不加''号还可以通过.Top

相关问题

  • 字符串转换
  • 字符串转换
  • 字符串转换
  • 如何可以将"<b>"字符串写入SQL数据库,我老是出错?
  • sql语句中的字符串与浮点型如何转换?
  • 万分紧急,高分求一字符串转换SQL语句!!
  • 求一个sql语句中使用的字符串转换类
  • sql sever 中如何把字符串转换成数值
  • 请问:字符串转换为数字型用什么?代码“userGuess = inputString.ToInt32();”编译出错!
  • Convert出错?我想把一个18位的字符串转换为18位的数字

关键词

  • 数据库
  • sql
  • strtodatetime
  • formatdatetime
  • datetimetostr
  • nn
  • adoquery
  • yyyy
  • floattostr
  • parambyname

得分解答快速导航

  • 帖主:CunningBoy
  • oklida
  • oklida
  • wrydao
  • LKJ99
  • yurenjf
  • hongjg
  • hongjg
  • suwen88
  • fhuibo
  • gmc007
  • scsdljb

相关链接

  • Delphi类图书
  • Delphi类源码下载
  • Delphi控件下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo