数据库 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就是你要求的值
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 语句结尾之后找到字符。
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 中间有分号,后面没有.
2 中间有分号,后面没有.
#8
select ident_current('TableName')
#9
楼主用的是OLEDB, 数据库应该是ACCESS, ACCESS不支持用;多语句查询,很多MSSQL里的T-SQL和函数不支持
建议还是在INSERT后用select max(xxID) from yyTABLE
建议还是在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就是你要求的值
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 语句结尾之后找到字符。
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 中间有分号,后面没有.
2 中间有分号,后面没有.
#8
select ident_current('TableName')
#9
楼主用的是OLEDB, 数据库应该是ACCESS, ACCESS不支持用;多语句查询,很多MSSQL里的T-SQL和函数不支持
建议还是在INSERT后用select max(xxID) from yyTABLE
建议还是在INSERT后用select max(xxID) from yyTABLE
#10
mark
#11
Mark