数据库Identity字段数值取回的问题 (5分)

  • 主题发起人 主题发起人 linx
  • 开始时间 开始时间
L

linx

Unregistered / Unconfirmed
GUEST, unregistred user!
其中一段
Query1.SQL.Add('Insert Into Table FieldList ValueList');
Query1.SQL.Add('Select @@Identity');
Query1.Open;
ID := Query1.Fields[0].AsInteger;
出现错误信息:列表索引越界
但是已经在数据库中插入数据。
应该是没有Query1.Fields[0]的缘故,但是我要取Identity字段数值,怎么办。
 
在线等候
 
一个Query的执行过程只能有一个SQL语句:
Query1.SQL.Clear;
Query1.SQL.Add('Insert Into Table FieldList ValueList');
Query1.ExecSQL;
Query1.SQL.Clear;
Query1.SQL.Add('Select @@Identity');
Query1.Open;
ID := Query1.Fields[0].AsInteger;
出现错误信息:列表索引越界
但是已经在数据库中插入数据。
应该是没有Query1.Fields[0]的缘故,但是我要取Identity字段数值,怎么办。

因为SQL语句中有了Insert语句, 又加了一个Select语句,执行完第一个语句(Insert语句就不会再执行第二个语句),而第一个语句是不会返回数据的,所以Fields中没有数据,当然Fields就会出错了!
 
我是搞错了,我原来是用
Query1.SQL.Add('Insert Into Table FieldList ValueList');
Query1.SQL.Add('Select @@Identity');
Query1.ExecSQL;
ID := Query1.Fields[0].AsInteger;的出错
Query1.SQL.Add('Insert Into Table FieldList ValueList');
Query1.SQL.Add('Select @@Identity');
Query1.Open;
ID := Query1.Fields[0].AsInteger;
可以插入数据,也能返回id,我也觉得挺奇怪的,insert用open也行?!

 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
回复
0
查看
782
爱音乐的孩子是小白
后退
顶部