sql 取新增ID(C#.net程序)

来源:百度知道 编辑:UC知道 时间:2024/06/25 08:11:06
SQL语句 insert into table1(name,age)values('测试',22); select @@idnetity 能取出新增的ID
但我在程序里面用
SqlCommand cmd = new SqlCommand(cmdText, sqlConn);
cmd.Parameters.AddRange(sqlParameters);
int val = cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
return val;

取出的是影响行数,请问如果才能取出新增的ID?
请指点,谢谢

int val = cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
int retVal = Convert.ToInt32(cmd.ExecuteScalar());
执行两次Execute
retVal 就是@@idnetity

int Id=Convert.ToInt32(cmd.ExecuteScalar());
获取的第一行第一列 就是返回的插入的新增ID。

我猜LZ应该是把insert into table1(name,age)values('测试',22); select @@idnetity 这两句SQL一起写在cmdText里了。
应该分开写:
cmd.CommandText = " insert into table1(name,age)values('测试',22) ";
cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
cmd.CommandText=" select @@idnetity ";
int ID = Convert.ToInt32(cmd.ExecuteScalar());

ID就是你所需要的。

String sql = "begin transaction;insert into table1(name,age)values('测试',22); select newID = max(idnetity) from table1;commit transaction"
SqlCommand cmd = new SqlCommand(sql,sqlConn);
cmd.Parameters.AddRange(sqlParameters);
int val = cmd.ExecuteScalar();
return val;