在C++Builder中怎样用ADO控件来DELETE数据的问题!!?

syman815 2004-08-27 12:01:20
我写了以下语句,执行时候总是报错:“SQL 语句未正常结素”请指教!
DataMod->ADOQuery1->Close();
DataMod->ADOQuery1->SQL->Clear();
AnsiString queryString1 ="delete yfkjsyxxk";
queryString1 +="where SFZH=";
queryString1 += "\'";
queryString1 +=SFZH;
queryString1 += "\'";
DataMod->ADOQuery1->SQL->Add(queryString1);
DataMod->ADOQuery1->ExecSQL();
...全文
190 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
wg961423 2004-08-29
  • 打赏
  • 举报
回复
delete from yfkjsyxxk where sfzh='SFZH'
doulikeme 2004-08-28
  • 打赏
  • 举报
回复
在这一句设个断点
DataMod->ADOQuery1->SQL->Add(queryString1);

看看queryString1是什么值,取出来 到数据库执行一遍,就知道错那儿了。

估计是 空格 或者是 缺了FROM
cnrealboy 2004-08-27
  • 打赏
  • 举报
回复
AnsiString queryString1 ="delete yfkjsyxxk where SFZH='SFZH'";

上面一句明显缺少from 应该是:
delete from 表 where 条件
laisf 2004-08-27
  • 打赏
  • 举报
回复
改成
DataMod->ADOQuery1->Close();
DataMod->ADOQuery1->SQL->Clear();
AnsiString queryString1 ="delete yfkjsyxxk where SFZH='SFZH'";
DataMod->ADOQuery1->SQL->Add(queryString1);
DataMod->ADOQuery1->ExecSQL();
ralpha08 2004-08-27
  • 打赏
  • 举报
回复
AnsiString queryString1="delete yfkjsyxxk where SFZH='SFZH'";
zzlong 2004-08-27
  • 打赏
  • 举报
回复
where 哪里却是少了个空格,from能不能省略不知道
"\'"没有问题,不用改
不过delete from yfkjsyxxk where sfzh='SFZH'倒是很合理
pcclever 2004-08-27
  • 打赏
  • 举报
回复
总结:
综上所述,你的代码有以下问题:
DataMod->ADOQuery1->Close();
DataMod->ADOQuery1->SQL->Clear();
AnsiString queryString1 ="delete yfkjsyxxk";//这里少一个from,应该是"delete from yfkjsyxxk "在最未应该加一个空格
queryString1 +="where SFZH=";
queryString1 += "\'";//这里的转义字符\是多余的,去掉它应为"'"
queryString1 +=SFZH;//这里的SFZH是一个字符串还是一个变量,要是变量就要有定义,要是字符串就要用双引号
queryString1 += "\'"; //这里的转义字符\是多余的,去掉它应为"'"
DataMod->ADOQuery1->SQL->Add(queryString1);
DataMod->ADOQuery1->ExecSQL();

好了,差不多了,整个语句应该是:
delete from yfkjsyxxk where sfzh='SFZH' //(SFZH按字串处理)
futulove 2004-08-27
  • 打赏
  • 举报
回复
DataMod->ADOQuery1->Close();
DataMod->ADOQuery1->SQL->Clear();
AnsiString queryString1 ="delete yfkjsyxxk ";//注意这里的空格
queryString1 +="where SFZH=";
queryString1 += "\'";
queryString1 +=SFZH;
queryString1 += "\'";
DataMod->ADOQuery1->SQL->Add(queryString1);
DataMod->ADOQuery1->ExecSQL();
befree 2004-08-27
  • 打赏
  • 举报
回复
空格
yfd08net 2004-08-27
  • 打赏
  • 举报
回复

DataMod->ADOQuery1->Close();
DataMod->ADOQuery1->SQL->Clear();
AnsiString queryString1 ="delete yfkjsyxxk";
queryString1 +="where SFZH='";
queryString1 +=SFZH;
queryString1 +="'";
DataMod->ADOQuery1->SQL->Add(queryString1);
DataMod->ADOQuery1->ExecSQL();
yfd08net 2004-08-27
  • 打赏
  • 举报
回复
这里你的语句可以不用转意字符"\"
zzjzln 2004-08-27
  • 打赏
  • 举报
回复
少空格。(表名与where之间)
在字符串连接时,要注意空格。
ralpha08 2004-08-27
  • 打赏
  • 举报
回复
如果是SQL Server的话可以不要from
Lonelywolf1899 2004-08-27
  • 打赏
  • 举报
回复
delete from TableName where

1,178

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 数据库及相关技术
社区管理员
  • 数据库及相关技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧