一小段代码,帮忙解决
用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




