※※※※※※※请教:怎么在delphi里得到刚刚插入的IDENTITY? 谢谢!※※※※※※※※※※※

pianzhouzi 2004-09-23 02:18:23
with ADOQuery1 do
begin
Close;
SQL.Clear;
SQL.Add('insert into Customers (CName, Sex, Tel, Address, IsMember) ');//Customers表中
有字段CID为自增量
SQL.Add('Values (:cname, :sex, :tel, :address, :ismember);');
SQL.Add('select @@IDENTITY’ ); //得到IDENTITY
Parameters.ParamByName('cname').Value := 'fdsf';
Parameters.ParamByName('sex').Value := '1';
Parameters.ParamByName('tel').Value := '3434';
Parameters.ParamByName('address').Value := 'fsdfs';
Parameters.ParamByName('ismember').Value := 0;
ExecSQL;
Edit1.Text := //这里怎么写,让刚得到的IDENTITY在Edit1中显示?
end;
...全文
129 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
rockswj 2004-09-23
  • 打赏
  • 举报
回复
楼主不是说:
如果我先插入一条语句,然后别人在其他机器上也插入一条语句,我再select ident_current(''Customers'')会不会得到别人插入的语句生成的IDENTITY?

一楼的也会产生这个效果呀!!!!
xhh_88 2004-09-23
  • 打赏
  • 举报
回复
昏!是啊,我都测试过了:(
pianzhouzi 2004-09-23
  • 打赏
  • 举报
回复
1楼,我没看到你的
active:=true;
这样可以了,
谢谢!
pianzhouzi 2004-09-23
  • 打赏
  • 举报
回复
插入数据后,再查询出来。
按表的主键查
select id from t where 主键=刚才插入的值
--------
我的主键就是这个ID字段
pianzhouzi 2004-09-23
  • 打赏
  • 举报
回复
adoquery.sql.text:='select ident_current(''Customers'') as col;';
adoquery.open;

-----------
如果我先插入一条语句,然后别人在其他机器上也插入一条语句,我再select ident_current(''Customers'')会不会得到别人插入的语句生成的IDENTITY?
rockswj 2004-09-23
  • 打赏
  • 举报
回复
插入数据后,再查询出来。
按表的主键查
select id from t where 主键=刚才插入的值
pianzhouzi 2004-09-23
  • 打赏
  • 举报
回复
一楼的'select @@IDENTITY as fid‘我试过,没用,说Field'fid' not found。谢谢回答
lff0305 2004-09-23
  • 打赏
  • 举报
回复
插入以后,从上面选择合适的SQL语句,执行查询,获得结果就行了。例如
adoquery.sql.text:='select ident_current(''Customers'') as col;';
adoquery.open;
edit1.text:=adoquery.filedbyname('col').asstrign;
adoquery.close;

lff0305 2004-09-23
  • 打赏
  • 举报
回复
select @@identity 或者 select IDENT_CURRENT(tablename) 例如select IDENT_CURRENT('table1')或者select SCOPE_IDENTITY()(tablename)

区别:
IDENT_CURRENT 返回为任何会话和任何作用域中的特定表最后生成的标识值。
@@IDENTITY 返回为当前会话的所有作用域中的任何表最后生成的标识值。
SCOPE_IDENTITY 返回为当前会话和当前作用域中的任何表最后生成的标识值。
xhh_88 2004-09-23
  • 打赏
  • 举报
回复
改一下

with ADOQuery1 do
begin
Close;
SQL.Clear;
SQL.Add('insert into Customers (CName, Sex, Tel, Address, IsMember) ');//Customers表中
有字段CID为自增量
SQL.Add('Values (:cname, :sex, :tel, :address, :ismember);');
SQL.Add('select @@IDENTITY as fid ’ ); //得到IDENTITY
Parameters.ParamByName('cname').Value := 'fdsf';
Parameters.ParamByName('sex').Value := '1';
Parameters.ParamByName('tel').Value := '3434';
Parameters.ParamByName('address').Value := 'fsdfs';
Parameters.ParamByName('ismember').Value := 0;
active:=true;
Edit1.Text :=fieldbyname('fid').asstring //这里怎么写,让刚得到的IDENTITY在Edit1中显示?
end;

2,498

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧