利用SqlDataAdapter更新一个强类型的dataset到数据库后,怎么获得新增的这条数据的ID值啊,谢谢?!

解决方案 »

  1.   

    重新读一次不就行了吗???
    select TOP 1 from 数据表 order by 主键表 DES
      

  2.   

    看你主键是怎么设置的
    如果是int类型,那么用select @@identity 方法返回,但如楼主所言,这并不能完全保证一定是插入的那条记录,当然在并发访问量不是很大的情况下,这还是适用的,实际上网上很多程序都是用这种方法。
    另外一种方法是创建guid,根据guid值总是能得到插入的记录,这是微软的很多网站采用的方法,具体操作可以baidu一下。
      

  3.   

    我想在执行存储过程时加入事务,会不会有保证@@identity回的ID就是我刚刚插入的ID?!如果用guid做主键,那么查询效率怎么保证?!
      

  4.   

    一般这样的插入,不要用更新式插入,而是使用SQLCOMMAND调用存储过程或执行SQL如果是ACCESS数据库,可以一插入就马上执行
    SELECT IDENT_CURRENT('表名') as '刚才插入的那行数据的ID'
    插入的SQL句子要和上面的那个放在同一个事务中执行如果是SQL2K或 SQL2K5可以用存储过程
    在插入的句子后面加多一句
    select SCOPE_IDENTITY() as '刚才插入的那行数据的ID'
    你可以在这个存储过程中加事务,也可以在你的.NET后台中加,无论如何,调用这个存储过程一定要用事务
      

  5.   

    select @@identity  当前会话任何作用域插入的数据的主键ID 
    select scope_identity() 当前会话当前作用域插入的数据的主键ID 
    select ident_current(tablename) 任何会话任何作用域指定表插入的数据的主键ID 可以用存储过程,返回新插入的数据的主键ID
      

  6.   

    如果你的主键是int型 并且自动加一是可以重读取出的!
      

  7.   

    还是用guid比较好一点,如果用int类型,很难防自动采集系统。