首页 文章

C#DataTable和PK

提问于
浏览
2

我遇到了这样的问题:用数据表获取表格 . 比如说,我们已经在表中有几条记录,其中有一个主键(自动增量) . 基本上,程序工作正常,直到我插入一个新行 . 即使我使用方法AcceptChanges或Update,新行也会被提交,但是现有的数据表对象缺少我需要进行更新处理的最新主键值 . 是唯一一种从数据库重新加载所有表的方法,还是有更好的方法呢?

谢谢,雷

2 回答

  • 4

    如果您有可以使用的连接对象

    int = (int)conn.executeScalar("SELECT @@IDENTITY")
    

    通过主键的数据类型进行修改 .

    这必须在任何其他操作之前直接完成,因为新插入将替换@@ IDENTIY中的存储值

  • 2

    您应该添加';选择SCOPE_IDENTITY()'到附加到数据适配器的insert sql语句的末尾 . 这将回读自动增量生成的最后插入值并更新数据集 .

    即,你的插入sql应该类似于:

    insert into sometable(column1,column2) values(@column1,@column2); select * from sometable where primarykeycolumn=scope_identity()
    

    然后,当dataadaper.Update(dataset)返回时,您现有的数据集将包含主键 .

相关问题