if you are using SQL Server, trystring sql = "insert into tbl01 (c1) values('a'); Select @@Identity as 'ID'";
OleDbCommand cmd = new OleDbCommand(sql,Ole_Con);
Ole_Con.Open();
int i = Convert.ToInt32(cmd.ExecuteScalar());

解决方案 »

  1.   

    插入成功后可以获得那个自动编号的字段的值,对于sqlserver可以使用存储过程输出参数返回,对于access,可以在rowupdated事件中返回SELECT @@IDENTITY语句的结果,参考代码如下:private void rowupdated(object sender,OleDbRowUpdatedEventArgs e)
    {
    if(e.StatementType==StatementType.Insert)
    {
    OleDbCommand comm=new OleDbCommand("SELECT @@IDENTITY",conn);
                    e.Row["nnoid"]=(int)comm.ExecuteScalar();
    }
    }
      

  2.   

    各位的方法是有用的,但如果是别的数据库呢?MS没有提供通用的解决方案吗?我想MS应该将这类信息封装在类似于Schema之类的就好了。这会儿又得自己写这个DBSchema类了,主要功能就是在操作数据库后,得到数据库的系统变量。
      

  3.   

    不可以通用的,因為自動增長在各個數據庫里面的實現都不盡相同,比如db2和oracle都是使用序列,但具體用法又不同,ms sqlserver和access是使用自動編號。
    所以得到最近插入的編號的方法也不同。