delphi 向数据库插入数据出错

来源:百度知道 编辑:UC知道 时间:2024/06/18 09:49:51
代码如下
begin
query1.Close;
query1.SQL.clear;
query1.SQL.Text:=memo1.Lines.Text;
try
query1.Open
except
query1.ExecSQL
end;
end;

输入语句:insert into book values('a','b');
在SQL Server 的Query 里面运行正常。
book 的结构为:
create table book (author char(50),title char(50));

错误提示为:
Project Project1.exe raised exception class ENoResultSet with message 'Error creating cursor hadle'.Process stopped

请高手帮助解决一下!
插入操作是成功的。但是依然报错。 一楼的回答不能解决,二楼那个语法报错。

改成 insert into book values("a","b");

或者 insert into book values(''a'',''b'');

单引号是delphi的特殊符号,可能因为这个出错.

补充: 刚才看到...呵呵,,第一次没有仔细看..

把query1.Open;去掉

当执行select 语句的时候是用 Open.
Open的意思是执行sql,并返回数据集, 你的是insert语句,
用Open,肯定执行成功,但是并没有数据集返回,所以抛错
ENoResultSet !!!

执行 insert,update,del 用Execsql;

把query1.SQL.Text:=memo1.Lines.Text;
这一句改为
query1.SQL.add:=memo1.Lines.Text;

try
query1.Open
except
query1.ExecSQL
end;
错误是这里抱出来的
因为你insert的,程序会先尝试用open操作,结果open就会报错,然后才会去触发except里面的语句,但是错误已经报出来了。

这个clientSocket里面一样的问题。

试试这样行不行:
begin
query1.Close;
query1.SQL.clear;
query1.SQL.Add('insert into book(author,title) values(''a'',''b'')');
query1.ExecSQL;

没有明白open和execsql意义,当你要检索某些数据,例如select * from xx where tiaojian 时,打开某个数据集,用open