部分代码如下:
Query1.SQL.Add('insert emailtable values ('''+edit2.Text+''', '''+edit3.Text+''' ,'''+edit4.Text+''', '''+datetostr(Date)+''', '''+memo1.Text+''')');
其中 edit2.edit3.edit4和memo1是窗体上控件;
表结构:序号自动生成的,姓名(char(40)),班级(char(40)),特长(char(40)),录入日期(就取系统时间),备注(text型)
运行后报错:
project project1.exe raised exception class ENoResultSet with message 'Error creating cursor handle'. Process stopped.
可一看数据库里已添加了新记录,为什么呢,那错了?高手指点我。
Query1.SQL.Add('insert emailtable values ('''+edit2.Text+''', '''+edit3.Text+''' ,'''+edit4.Text+''', '''+datetostr(Date)+''', '''+memo1.Text+''')');
其中 edit2.edit3.edit4和memo1是窗体上控件;
表结构:序号自动生成的,姓名(char(40)),班级(char(40)),特长(char(40)),录入日期(就取系统时间),备注(text型)
运行后报错:
project project1.exe raised exception class ENoResultSet with message 'Error creating cursor handle'. Process stopped.
可一看数据库里已添加了新记录,为什么呢,那错了?高手指点我。
Query1.RequestLive:=true
RequestLive为false时Query1的结果集是不可改写的。
delphi帮助中RequestLive的含义:
Specifies whether an application expects to receive a live result set from the Borland Database Engine (BDE) when the query executes. ^_^
很明显是创建游标句柄错误了,
query1.close;
query1.sql.clear;
query1.sql.add('insert into emailtable (姓名,班级,特长,录入日期,备注) ');
query1.sql.add('values (:a1,:a2,:a3,:a4,:a5) ');
query1.parambyname('a1').asstring:=edit2.text;
query1.parambyname('a2').asstring:=edit3.text;
query1.parambyname('a3').asstring:=edit4.text;
query1.parambyname('a4').asdate:=date;
query1.parambyname('a5').asstring:=memo1.text;
query1.execsql;
如果是的话,改成Insert Into .... 用ExecSQL试试。
Open有返回记录集(当然也可能是空),ExecSQL通常在不用返回记录集的时候使用。
下面这样写
procedure TForm1.Button1Click(Sender: TObject);
begin
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add('insert into khb1(aa,bb) value('+#39+edit1.Text+#39+','+#39+edit2.Text+#39+')');
Query1.ExecSQL;
end;end.
你的写法 insert 后面必须有into
procedure TForm1.Button1Click(Sender: TObject);
begin
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add('insert into khb1(aa,bb) values('''+edit1.Text+''', '''+edit2.Text+''')');
Query1.ExecSQL;
end;end.