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

奇怪,我写的SQL语句执行成功了,但是数据库中的记录并没有发生改变!

楼主jewen_delphi(DELPHI代码)2005-03-02 13:36:59 在 Delphi / 数据库相关 提问

我用ADOQUERY组件执行一个数据更新的操作代码,并且执行了ADOQUERY1.EXECSQL的语句,编译也成功了。可是执行完了,数据库并没有更新。奇怪的是我做的insert和delete都可以成功!大家帮帮想以下是什么原因? 问题点数:15、回复次数:12Top

1 楼caiso(十年磨一剑)回复于 2005-03-02 13:38:14 得分 0

顶一下Top

2 楼qixp231(漫步者)回复于 2005-03-02 13:40:39 得分 0

把你的sql语句贴出来,肯定是你语句的问题了Top

3 楼jxc001(烟灰菜)回复于 2005-03-02 13:42:03 得分 0

ADOQUERY.CLOSE一下,可能是事物没有提交  
  或者  
  ADOQuery.Sql.SaveToFile('c:\sql.txt');  
  ADOQuery.ExecSql;  
  在去C盘下看看SQL有没有写对,可以COPY到数SQL调试器里执行一下看.Top

4 楼jewen_delphi(DELPHI代码)回复于 2005-03-02 13:54:42 得分 0

procedure   TForm_operator.BitBtn1Click(Sender:   TObject);  
  var  
  adoquery1:Tadoquery;  
  begin  
  adoquery1:=Tadoquery.Create(self);  
  adoquery1.Connection   :=adoconnection1;  
  adoquery1.close   ;  
  if   radiobutton2.Checked   then  
    begin  
    adoquery1.SQL.Clear;  
    adoquery1.SQL.Add('update   operator   set   pword=code,type=usertype,qx1=q1,qx2=q2,qx3=q3,qx4=q4,lasttime=ltime   where   username=userid');  
    adoquery1.Parameters.Clear   ;  
    adoquery1.Parameters.AddParameter;  
    adoquery1.Parameters[0].Name   :='userid';  
    adoquery1.Parameters[0].DataType:=ftstring;  
    adoquery1.Parameters[0].Direction   :=pdinput;  
    adoquery1.Parameters[0].Value   :=edit1.Text   ;  
    adoquery1.Parameters.AddParameter;  
    adoquery1.Parameters[1].Name   :='code';  
    adoquery1.Parameters[1].DataType:=ftstring;  
    adoquery1.Parameters[1].Direction   :=pdinput;  
    adoquery1.Parameters[1].Value   :=edit2.Text   ;  
    adoquery1.Parameters.AddParameter;  
    adoquery1.Parameters[2].Name   :='usertype';  
    adoquery1.Parameters[2].DataType:=ftstring;  
    adoquery1.Parameters[2].Direction   :=pdinput;  
    adoquery1.Parameters[2].Value   :=edit3.Text   ;  
    adoquery1.Parameters.AddParameter;  
    adoquery1.Parameters[3].Name   :='q1';  
    adoquery1.Parameters[3].DataType:=ftboolean;  
    adoquery1.Parameters[3].Direction   :=pdinput;  
    adoquery1.Parameters[3].Value   :=checkbox1.Checked   ;  
    adoquery1.Parameters.AddParameter;  
    adoquery1.Parameters[4].Name   :='q2';  
    adoquery1.Parameters[4].DataType:=ftboolean;  
    adoquery1.Parameters[4].Direction   :=pdinput;  
    adoquery1.Parameters[4].Value   :=checkbox2.Checked;  
    adoquery1.Parameters.AddParameter;  
    adoquery1.Parameters[5].Name   :='q3';  
    adoquery1.Parameters[5].DataType:=ftboolean;  
    adoquery1.Parameters[5].Direction   :=pdinput;  
    adoquery1.Parameters[5].Value   :=checkbox3.Checked   ;  
    adoquery1.Parameters.AddParameter;  
    adoquery1.Parameters[6].Name   :='q4';  
    adoquery1.Parameters[6].DataType:=ftboolean;  
    adoquery1.Parameters[6].Direction   :=pdinput;  
    adoquery1.Parameters[6].Value   :=checkbox4.Checked   ;  
    adoquery1.Parameters.AddParameter;  
    adoquery1.Parameters[7].Name   :='ltime';  
    adoquery1.Parameters[7].DataType:=ftdatetime;  
    adoquery1.Parameters[7].Direction   :=pdinput;  
    adoquery1.Parameters[7].Value   :=strtodate(maskedit1.Text)   ;  
    adoquery1.ExecSQL   ;  
    application.MessageBox('修改该操作用户成功!','信息提示框',mb_ok);  
    adoquery1.Close   ;  
    end  
  else  
  .......  
  后面就省略了。。。Top

5 楼zzlazio(sritsb)回复于 2005-03-02 13:59:30 得分 5

adoquery1.SQL.Add('update   operator   set   pword=code,type=usertype,qx1=q1,qx2=q2,qx3=q3,qx4=q4,lasttime=ltime   where   username=userid');  
  >>>>>>>>>>>>>>>  
  应该都用   =:Top

6 楼Blakhawk(黑鹰)回复于 2005-03-02 14:03:49 得分 0

自己SQL语句都不会写,好好去看看怎么写SQL语句的书吧。  
  如楼上所说:要这么写SQL描叙  
  adoquery1.SQL.Text:='update   operator   set   pword=:code,type=:usertype,qx1=:q1,qx2=:q2,qx3=:q3,qx4=:q4,lasttime=:ltime   where   username=:userid';  
  Top

7 楼cdsgajxlp(起名很难)回复于 2005-03-02 14:31:21 得分 0

adoquery1.SQL.Text:='update   operator   set   pword=:code,type=:usertype,qx1=:q1,qx2=:q2,qx3=:q3,qx4=:q4,lasttime=:ltime   where   username=:userid';Top

8 楼jewen_delphi(DELPHI代码)回复于 2005-03-02 15:32:07 得分 0

哈哈!我修改看看!我没有用冒号在执行select的时候怎么就能成功呢?比如用adodataset组件来判断登入系统的用户名是否存在时,怎么就能执行好判断呢?  
  procedure   Tchangepassword.Edit1Exit(Sender:   TObject);  
  var  
  adodataset1:Tadodataset;  
  begin  
  adodataset1:=Tadodataset.Create(self);  
  adodataset1.Connection   :=adoconnection1;  
  adodataset1.Close   ;  
  adodataset1.CommandType   :=cmdtext;  
  adodataset1.CommandText   :='select   *   from   operator   where   username=s0';  
  adodataset1.Parameters.Clear;  
  adodataset1.Parameters.AddParameter   ;  
  adodataset1.Parameters[0].Name:='s0';  
  adodataset1.Parameters[0].DataType   :=ftstring;  
  adodataset1.Parameters[0].Direction   :=pdinput;  
  adodataset1.Parameters[0].Value   :=edit1.Text   ;  
  adodataset1.Active   :=true;  
  if   adodataset1.Recordset.RecordCount=1   then  
      begin  
      edit2.SetFocus   ;  
      end  
  else  
      begin  
      application.MessageBox('FAAFDSAFSD啊',mb_ok);  
      edit1.Text   :='';  
      edit1.SetFocus   ;  
      end;  
  end;  
  -----------------------------  
  其实我在看别人的作品时,他们也都有用冒号,也许是自己受SQL2000的影响吧!把习惯带进来了。Top

9 楼yiyideyi(一一得一)回复于 2005-03-02 15:46:28 得分 5

晕,你正常的sql语句当然不用=:,那是在使用外部参数时才用到冒号的。Top

10 楼jewen_delphi(DELPHI代码)回复于 2005-03-02 15:47:10 得分 0

大哥,我试过了,但还是没有更新数据库。我在猜想会不会少写了行关于adoquery组件的执行代码。Top

11 楼zzlazio(sritsb)回复于 2005-03-02 16:00:27 得分 5

procedure   TForm_operator.BitBtn1Click(Sender:   TObject);  
  var  
  adoquery1:Tadoquery;  
  begin  
  adoquery1:=Tadoquery.Create(self);  
  adoquery1.Connection   :=adoconnection1;  
  if   radiobutton2.Checked   then  
    begin  
        with   adoquery1   do  
            begin  
                close;  
                SQL.Clear;  
                SQL.Add('update   operator   set   pword=:code,type=:usertype,qx1=:q1,qx2=:q2,qx3=:q3,qx4=:q4,lasttime=:ltime   where     username=:userid');  
                parameters.parambyname('code').value:=Trim(edit2.Text);  
                parameters.parambyname('usertype').value:=Trim(edit3.Text);  
                parameters.parambyname('q1').value:=checkbox1.Checked;  
                parameters.parambyname('q2').value:=checkbox2.Checked;  
                parameters.parambyname('q3').value:=checkbox3.Checked;  
                parameters.parambyname('q4').value:=checkbox4.Checked;  
                parameters.parambyname('ltime').value:=strtodate(maskedit1.Text);  
                parameters.parambyname('userid').value:=Trim(edit1.Text);  
                ExecSQL   ;  
                application.MessageBox('修改该操作用户成功!','信息提示框',mb_ok);  
            end;  
      end;  
   
  Top

12 楼jewen_delphi(DELPHI代码)回复于 2005-03-03 10:08:29 得分 0

问题已经解决啦!谢谢各位了!Top

相关问题

  • 用Sql语句将记录集的数据导入数据库
  • 求SQL语句,用于复制数据库(结构,记录)
  • 查询数据库记录的前六条记录的SQL语句怎么写???
  • 如何用sql语句删除关联两个数据库记录???
  • 为什么ADO数据库插入记录报错:80040e14(SQL语句错误)?
  • 从数据库中随机取8条记录的SQL语句怎么写
  • 一个关于从另一个sql server2000数据库中生成的T_sql语句新建数据库,导致记录无法更新的解决办法?
  • 关于ACCESS数据库的SQL语句
  • 用SQL语句updata数据库问题?
  • 怎样用最简单的SQL语句得到数据库中的最后N条记录?

关键词

  • 语句
  • 执行
  • sql
  • 数据库
  • 组件
  • adoquery
  • qx
  • adodataset
  • parambyname
  • ltime

得分解答快速导航

  • 帖主:jewen_delphi
  • zzlazio
  • yiyideyi
  • zzlazio

相关链接

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

广告也精彩

反馈

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