C# 向数据库插入一条记录后,如何获得新插入记录的自动编号(id)

时间:2021-09-21 21:44:35
以下是我向数据库插入新记录的代码:

数据库 data 表中 有两个字段:id(自动编号)、name

一下是我插入记录的代码:
System.Data.OleDb.OleDbDataAdapter catDA = new System.Data.OleDb.OleDbDataAdapter("SELECT * FROM data", conn);
catDA.InsertCommand = new System.Data.OleDb.OleDbCommand("INSERT INTO data (name) Values(@name)", conn);
catDA.InsertCommand.Parameters.Add("@name", System.Data.OleDb.OleDbType.Char, 15, "name");
System.Data.DataSet catDS = new System.Data.DataSet();
catDA.Fill(catDS, "data");
object[] rowVals = new object[2];
rowVals[1] = "a1";
catDS.Tables["data"].Rows.Add(rowVals);
catDA.Update(catDS,"data");

此时,我想获得这条被新插入到数据库的记录的 id字段的值(自动编号),请问该如何操作呢?

谢谢!!!

11 个解决方案

#1


sqlcmdInsert.CommandText="SELECT @@IDENTITY as ID "; SqlDataReader sqlDataReader=sqlcmdInsert.ExecuteReader(); sqlDataReader.Read();
indentity=Convert.ToInt64(sqlDataReader["ID"]);
indentity就是你要求的值

#2


SELECT @@IDENTITY as ID from table

#3


Sql 语句用 "INSERT INTO data (name) Values(@name);SELECT @@Identity "代替

结果集的首行首列是你要的结果.

#4


标记一下

#5


加入“SELECT @@Identity ”命令,得到的集合第一条

#6


string sqlstr = "INSERT INTO data (name) Values('a');SELECT @@Identity;";
System.Data.OleDb.OleDbCommand cmd = new System.Data.OleDb.OleDbCommand(sqlstr);
cmd.Connection = conn;
cmd.ExecuteNonQuery();
cmd.Connection.Close();

我用以上代码运行,可报错说:在 SQL 语句结尾之后找到字符。

#7


1 不是用ExecuteNonQuery()来执行,你不要那个id值了?????用ExecuteScalar(),返回值是那个id.

2 中间有分号,后面没有.

#8


select ident_current('TableName')

#9


楼主用的是OLEDB, 数据库应该是ACCESS, ACCESS不支持用;多语句查询,很多MSSQL里的T-SQL和函数不支持

建议还是在INSERT后用select max(xxID) from yyTABLE

#10


mark

#11


Mark

#1


sqlcmdInsert.CommandText="SELECT @@IDENTITY as ID "; SqlDataReader sqlDataReader=sqlcmdInsert.ExecuteReader(); sqlDataReader.Read();
indentity=Convert.ToInt64(sqlDataReader["ID"]);
indentity就是你要求的值

#2


SELECT @@IDENTITY as ID from table

#3


Sql 语句用 "INSERT INTO data (name) Values(@name);SELECT @@Identity "代替

结果集的首行首列是你要的结果.

#4


标记一下

#5


加入“SELECT @@Identity ”命令,得到的集合第一条

#6


string sqlstr = "INSERT INTO data (name) Values('a');SELECT @@Identity;";
System.Data.OleDb.OleDbCommand cmd = new System.Data.OleDb.OleDbCommand(sqlstr);
cmd.Connection = conn;
cmd.ExecuteNonQuery();
cmd.Connection.Close();

我用以上代码运行,可报错说:在 SQL 语句结尾之后找到字符。

#7


1 不是用ExecuteNonQuery()来执行,你不要那个id值了?????用ExecuteScalar(),返回值是那个id.

2 中间有分号,后面没有.

#8


select ident_current('TableName')

#9


楼主用的是OLEDB, 数据库应该是ACCESS, ACCESS不支持用;多语句查询,很多MSSQL里的T-SQL和函数不支持

建议还是在INSERT后用select max(xxID) from yyTABLE

#10


mark

#11


Mark