使用delete语句时出错(50分)

  • 主题发起人 主题发起人 yc-zhj
  • 开始时间 开始时间
Y

yc-zhj

Unregistered / Unconfirmed
GUEST, unregistred user!
我在使用sql的delete语句是,编译器总是报:创建光标句柄错误,我按确定,程序还是可以
把表中的内容给删除掉,如果我把delete换成select,则一切正常。各位大虾,能否告知我
为什么会出现这种错误,以及怎么解决这种错误,
 
把你的Sql语句写出来看看!
 
query1.sql.add('delete');
query1.sql.add('from xx.db');
xx.db是表名
query1是在数据模板中的
 
query1.sql.add('delete '); //最后要有空格
query1.sql.add(' from xx.db');
query1.execsql;

记住:有记录集返回用 OPEN,否则用 EXECSQL;
 
我觉得着并不是一个很好的编程风格。SQL 语句最好单独拿出来写。如:
var
strSql:String;
………………
strSql := 'Delete from xx.db';
Query1.Sql.Clear;
Query1.Sql.Add(strSql);
………………

这样就好调试多了
 
query1.sql.add('delete from xx.db')
 
问题处在不是使用ExecSQL而是使用Open执行了这个Query。
至于使用Add添加,前面是不需要使用空格的。
至于编程的风格。每个人都不同。要是我写,我会这么写的:
with query1 do
begin
Close;
SQL.Text:='delete from xx.db';
ExecSQL;
end;
原因:1、都是Query的属性,所以使用With
2、因为SQL语句比较短,没有使用Add,而是直接使用Text赋值,免去了Clear这句话。
 
多人接受答案了。
 
后退
顶部