0

2 つの SqlCommand オブジェクトに対して 2 つの update sql ステートメントを使用して、DataSet オブジェクトを持つ 1 つの DataTable を 1 つのソース テーブルに更新します。最初のものだけを更新する更新ボタンをクリックすると、2番目の SqlCommand オブジェクトが機能しません。それは何です?DataTable は一度に 2 つの 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 :)

4

1 に答える 1

2

それを使用する方法では、dataadapters とデータセットは必要ありません...
2 つの更新ステートメントを実行するだけです。

あなたはただすることができます

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

データセットとデータアダプターは、クライアントにデータを取得するためのものです。
クライアント側でデータを変更し、変更をサーバーに送信します。
SQL を使用してサーバー上で直接変更を行っています。

于 2009-11-15T08:46:54.237 に答える