Delphi中关于query的cursor的问题

来源:百度知道 编辑:UC知道 时间:2024/05/16 17:19:01
Delphi编程中一下语句总是出错:
query1.SQL.Clear;
query1.SQL.Add('insert into chat');//chat是一个数据库中的一个table
query1.SQL.Add('values("'+Edit1.Text+'","'+Edit2.Text+'","'+combobox1.Text+'","'+Memo1.Text+'")');
query1.ExecSQL;
query1.Open;

总是返回错误说:error creating cursor handle!然后连续插入两条相同的数据啊!谢谢帮忙啊!!
还是一样,删掉query1.Open就录不了数据,有两个就有“error creating cursor handle!” 的错误!究竟怎么了,我是用Delphi自带的桌面数据库啊

问题解决了,虽然没用上你们的意见,还是很谢谢啊!

query1.Close;
query1.SQL.Clear;
query1.SQL.Add('insert into product values(:id,:productname,:spec,:unit,:productremark)');
query1.ParamByName('id').AsString := edit4.text;;
query1.ParamByName('productname').AsString := trim(edit1.Text);
query1.ParamByName('spec').AsString := edit2.Text;
query1.ParamByName('unit').AsBoolean := checkbox1.Checked;
query1.ParamByName('productremark').AsString := edit3.Text;
query1.ExecSQL;
你的SQL让人看了很模糊.首先你的insert语句中需要那么多传入值,为什么不使用参数?
query1.SQL.Add('values("'+Edit1.Text+'","'+Edit2.Text+'","'+combobox1.Text+'","'+Memo1.Text+'")');
是我见过的最复杂的sql语句.
query.execsql就是执行的意思,这句通过后数据库中就已经插入了一条记录了,不需要open.你以前的做法需要改善.
上面的代码是我做的,测试通过.

1.ExecSQL = Open,所以被执行了两次。
2.不应该用Query,直接用TTable的Add比较好。