不太懂楼主的意思,这是一个SDK的sample,希望对你有帮助:
    Dim myConn As New SqlConnection(myConnection)
    Dim myDataAdapter As New SqlDataAdapter()
    myDataAdapter.SelectCommand = New SqlCommand(mySelectQuery, myConn)
    Dim cb As SqlCommandBuilder = New SqlCommandBuilder(myDataAdapter)    myConn.Open()    Dim ds As DataSet = New DataSet
    myDataAdapter.Fill(ds, myTableName)    
    myDataAdapter.Update(ds, myTableName)    myConn.Close()

解决方案 »

  1.   

    谢谢楼上两位,应该有人碰到过这样的问题。一楼说的我也知道的比如:
    下面的是直接从数据库拖一个表tbl_unit(unitid 自增标识列,unit 字符型)到表单时自动生成sqlDataAdapter1中的insertCommand命令字符串:
    this.sqlInsertCommand1.CommandText=
    "INSERT INTO tbl_unit(Unit) VALUES (@Unit); SELECT UnitId, Unit FROM tbl_unit WHERE (UnitId = @@IDENTITY)"注意上面包含:SELECT UnitId, Unit FROM tbl_unit WHERE (UnitId = @@IDENTITY)也就是说,如果当我更新数据集时:
    DataSet dsChanges = dataSet11.GetChanges();
    sqlDataAdapter1.Update(dsChanges)时,dsChanges.tbl_unit中的字段unitid值(自动增加标识列)同时更新,但如果我用SqlCommandBuilder生成的InsertCommand中却不会包含SELECT UnitId, Unit FROM tbl_unit WHERE (UnitId = @@IDENTITY),也就是如果我更新数据返回数据集dsChanges的话,当中的ID值是没有更新的,所以我就不能通过merge合并dsChanges到表示层得到和源数据一致的结果集。
    ☆我现在是用多层开发,层与层之间通过DataSet沟通,如果更新后我得到的dsChanges并没有更新,我更新后合并到表示层中的DataSet时,得到的结果也会不正确。
    ☆我的InsertCommand是在保存数据时通过SqlCommandBuilder生成的,放在数据访问层,所以如果每次更新时,生成命令后都再加上类似SELECT UnitId, Unit FROM tbl_unit WHERE (UnitId = @@IDENTITY)的语句会很不方便,有没有好点的办法?更新数据同时也更新dsChanges中的ID标识列呢?
      

  2.   

    灵活控制数据源,在SQL层面上控制比在DataSet控制好办得多啊
      

  3.   

    如果你用的库是SQL,我觉得你直接用T-SQL语言在SQL库里写存储过程这种做的效果实在是太有效果了,如果用的是其它的库那就别直接用SqlCommandBuilder生成语句,具体可看.net中自带的帮助示例中有。