以下是我向数据库插入新记录的代码:数据库 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字段的值(自动编号),请问该如何操作呢?谢谢!!!

解决方案 »

  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.   

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

  5.   

    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 语句结尾之后找到字符。
      

  6.   

    1 不是用ExecuteNonQuery()来执行,你不要那个id值了?????用ExecuteScalar(),返回值是那个id.2 中间有分号,后面没有.
      

  7.   

    select ident_current('TableName')
      

  8.   

    楼主用的是OLEDB, 数据库应该是ACCESS, ACCESS不支持用;多语句查询,很多MSSQL里的T-SQL和函数不支持建议还是在INSERT后用select max(xxID) from yyTABLE