This question already has answers here:
Returning last inserted id from MySql
(2个答案)
MySql Last Insert ID, Connector .net
(5个答案)
5年前关闭。
我有一张桌子,下面是各列及其数据类型
现在当我在数据库中插入一行时:(数据库为MySQL,编程语言为c#)
表中的行类似于:
param_id必须类似于“ Res1”,其中1是自动生成的ID。
但是,当我们插入此行时,我们无法插入“ Res1”,因为未知,并且只有在插入后才能获得。
我在插入上面这一行后就尝试了
但它始终返回null,不返回ID。
我该如何解决?
插入后如何获取ID。
也应该是最后插入的ID,因为可能有很多行,例如:
但是Res也将拥有id部分。
所以我实际上想在插入第二行后立即将“ Res”更新为“ Res2”。
然后插入带有
(2个答案)
MySql Last Insert ID, Connector .net
(5个答案)
5年前关闭。
我有一张桌子,下面是各列及其数据类型
id=>AI,PK,int(11)
param_id=>varchar(45)
type=>varchar(45)
stationname=>varchar(45)
param=>varchar(45)
现在当我在数据库中插入一行时:(数据库为MySQL,编程语言为c#)
insert into param_reference (Param_Id,Type,StationName,Param) values ('Res','" + Type + "','" + damName + "','maxQ')"
表中的行类似于:
'1', 'Res', 'Reservoirs', 'B', 'maxQ'
param_id必须类似于“ Res1”,其中1是自动生成的ID。
但是,当我们插入此行时,我们无法插入“ Res1”,因为未知,并且只有在插入后才能获得。
我在插入上面这一行后就尝试了
select id from param_reference where Type='" + Type + "',StationName='" + damName + "',Param='maxQ',Param_id='Res'
但它始终返回null,不返回ID。
我该如何解决?
插入后如何获取ID。
也应该是最后插入的ID,因为可能有很多行,例如:
'1', 'Res', 'Reservoirs', 'B', 'maxQ'
'2', 'Res', 'Reservoirs', 'B', 'maxQ'
'3', 'Res', 'Reservoirs', 'B', 'maxQ'
'4', 'Res', 'Reservoirs', 'B', 'maxQ'
但是Res也将拥有id部分。
所以我实际上想在插入第二行后立即将“ Res”更新为“ Res2”。
最佳答案
因此,执行此操作的一个小技巧是将您的声明更改为:
INSERT INTO tbl (...) VALUES (...); SELECT LAST_INSERT_ID()
然后插入带有
ExecuteScalar
的行,这将返回您的ID;然后可以相应地更新对象。因此,整个代码段可能如下所示:using (var conn = new MySqlConnection(connString))
using (var cmd = new MySqlCommand(sql, conn))
{
var result = cmd.ExecuteScalar();
int id;
if (int.TryParse(result, out id))
{
// set the object's id here
}
}
关于c# - 如何获取最后插入的行的ID ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23737963/