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

一小段代码,帮忙解决

楼主feilo(窗外)2004-05-02 01:58:56 在 C++ Builder / 基础类 提问

用ADO连接,怎么写删除记录的语句啊?如下是我写的:  
  void   __fastcall   TForm1::Button6Click(TObject   *Sender)  
  {  
            ADOQuery1->Active=false;  
            ADOQuery1->SQL->Clear();  
            ADOQuery1->Parameters->Clear();  
            ADOQuery1->SQL->Add("DELETE   FROM   Employees");  
            ADOQuery1->SQL->Add("WHERE   fname=:fname");  
            ADOQuery1->FieldByName("fname")->AsString=Edit3->Text;  
            ADOQuery1->Open();  
  }  
  我先是让数据表的五个字段的记录显示在Edit1-Edit5里,然后再把它们删除,  
  但出现如下错误:  
  ADOQuery1:Field   'fname'   not   found.  
  我刚学一个星期而已,也不知道上面的语法有没有错,  
   
  请帮忙解决! 问题点数:20、回复次数:5Top

1 楼weill(每天提一问,一天学一点)回复于 2004-05-02 09:19:13 得分 20

显示和删除应该是两步。  
  你不可能使用一个ADO控制来同时实现两个操作。  
  此外,你的代码比较混乱,根本没有应有的逻辑,我想,你是一点儿也不懂,在抄作业呢。  
   
  代码应如下:  
  显示一条记录里的内容(使用Edit1->Text)(请自行加入相应的触发事件如Button1中去)  
  //------------------------------------------------------------  
            String   SQLStr,XMStr;  
            XMStr   =   "张大年";  
            SQLStr   =   "SELETE   FROM   Employees   WHERE   fname   =   '"   +   XMStr   +   "'";  
            //-------上面三条语句用以准备查询条件-----  
   
            ADOQuery1->Active=false;  
            ADOQuery1->SQL->Clear();  
            //-------上面二条用以清除ADOQ原有的SQL内容(如果有)-----  
   
            ADOQuery1->SQL->Add(SQLStr);  
            ADOQuery1->Open();  
            //-------上面二条用于持行查询-------  
   
            ADOQuery1->FieldByName("fname")->AsString=Edit3->Text;  
            //-------上面一条用于显示结果-------  
   
  至于删除,和上面的非常类似,如下:(一般,我们不把它们混在同一个触发事件中,除非真的必要)  
            String   SQLStr,XMStr;  
            XMStr   =   "张大年";  
            SQLStr   =   "DELETE   FROM   Employees   WHERE   fname   =   '"   +   XMStr   +   "'";  
            //-------上面三条语句用以准备查询条件-----  
   
            ADOQuery1->Active=false;  
            ADOQuery1->SQL->Clear();  
            //-------上面二条用以清除ADOQ原有的SQL内容(如果有)-----  
   
            ADOQuery1->SQL->Add(SQLStr);  
            ADOQuery1->ExecSQL();  
            //-------上面二条用于持SQL语句(注意自个体会此处的不同)-------  
  Top

2 楼weill(每天提一问,一天学一点)回复于 2004-05-02 09:21:11 得分 0

以上事例中,我假设你的ADOQuery1的数据源设定已正常,在你的数据库中有表Employees,有字段fname。有一条记录,其字段fname里的内容为'张大年'(抗日英雄哦,呵)。Top

3 楼tryanother(静心求是)回复于 2004-05-02 09:32:21 得分 0

你在SQL语句中使用了:fname,也就是说使用了参数,那么下面一句应当是对ADOQuery的参数字段赋值勤,也就是Parammeters,而不是对Field赋值.而且对于Delete这样的即非Select语句是不能用Open来执行的,而要用ExecSQL来执行.Top

4 楼chifengwatch(chifengwatch)回复于 2004-05-02 12:56:13 得分 0

ExecSQLTop

5 楼feilo(窗外)回复于 2004-05-02 14:20:37 得分 0

谢谢weill的教训,搞定了!  
  主要是不懂是用ADOQuery1->ExecSQL();来执行删除操作的。  
  因为我接触C++ builder才几天而已,而这几天图书管又放假了,所以没有办法,只能问了,见笑了!Top

相关问题

  • 一段小代码
  • ^_^,一段小代码?!
  • 一段小代码
  • 求一小段代码!
  • 一小段代码!谢谢!
  • 一小段java代码转化为vbscript代码
  • 一小段段段代码。。。。。。。。。。帮忙
  • 求一段代码
  • 求一段代码
  • 求一段代码

关键词

  • 语句
  • 代码
  • 字段
  • 执行
  • active
  • 内容
  • sql
  • adoquery1
  • xmstr
  • fname

得分解答快速导航

  • 帖主:feilo
  • weill

相关链接

  • CSDN Blog
  • 技术文档
  • 代码下载
  • 第二书店
  • 读书频道

广告也精彩

反馈

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