我有两个更新 sql 语句,用于两个 SqlCommand 对象,将一个带有 DataSet 对象的 DataTable 更新为一个源表。当我单击更新按钮时,仅更新第一个,而第二个 SqlCommand 对象不起作用。那是什么?DataTable 不支持同时使用两个 Command 对象?我写如下:

Dim conxMain As New SqlConnection("Data Source=SERVER;Initial Catalog=DBTest;Persist Security Info=True;User ID=usr;Password=pwd")

    Dim dadStockInfo As New SqlDataAdapter
    Dim dsStockInfo As New DataSet
    Dim transStockInfo As SqlTransaction = Nothing
    Try
        conxMain.Open()

        transStockInfo = conxMain.BeginTransaction()
        dadStockInfo.SelectCommand = New SqlCommand("SELECT * FROM Stock", conxMain, transStockInfo)
        Dim builder As SqlCommandBuilder = New SqlCommandBuilder(dadStockInfo)

        dadStockInfo.FillSchema(dsStockInfo, SchemaType.Source, "Stock")

        dadPurchaseInfo.Fill(dsPurchaseInfo, "Stock")

        Dim cmdStockUpdateCmd As SqlCommand = Nothing

        cmdStockUpdateCmd = New SqlCommand("UPDATE Stock SET StockCode= 'TestCode' WHERE StockID = 4", conxMain, transStockInfo)
        dsStockInfo.Tables("Stock").Columns("StockID").ReadOnly = False
        dadStockInfo.UpdateCommand = cmdStockUpdateCmd

        //dadStockInfo.Update(dsStockInfo, "Stock") [I have already tried this but did not work]

        Dim cmdStockUpdateCmd1 As SqlCommand = Nothing

        cmdStockUpdateCmd1 = New SqlCommand("UPDATE Stock SET StockCode= 'Test-Code2' WHERE StockID = 1", conxMain, transPurchaseInfo)

       dadStockInfo.UpdateCommand = cmdStockUpdateCmd1

       dadStockInfo.Update(dsStockInfo, "Stock")

       transStockInfo.Commit()

我不能像上面那样使用吗?请指出我!

你好 !帮我!F1:)

有帮助吗?

解决方案

你使用它的方式你不应该需要数据适配器和数据集......
您只需执行 2 个更新语句。

你可以这样做

cmdStockUpdateCmd1 = New SqlCommand("UPDATE Stock SET StockCode= 'Test-Code2' WHERE StockID = 1", conxMain, transPurchaseInfo)
cmdStockUpdateCmd1.ExecuteNonQuery();

数据集和数据适配器用于将数据获取到客户端。
在客户端更改数据,然后将修改发送到服务器。
您可以使用 SQL 直接在服务器上进行更改。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top