Два объекта SqlCommand и обновление одной исходной таблицы

StackOverflow https://stackoverflow.com/questions/1728112

  •  19-09-2019
  •  | 
  •  

Вопрос

У меня есть два оператора sql обновления для двух объектов SqlCommand для обновления одного DataTable с объектом DataSet до одной исходной таблицы.Когда я нажимаю кнопку обновления, обновляется только первый, а второй объект 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()

Разве я не могу использовать, как указано выше?пожалуйста, укажите мне!

Привет !Помоги мне!Ф1 :)

Это было полезно?

Решение

При использовании вам не понадобятся адаптеры данных и наборы данных...
Вы просто выполняете 2 оператора обновления.

Ты можешь просто сделать

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

Наборы данных и адаптеры данных предназначены для передачи данных клиенту.
Изменение данных на стороне клиента и последующая отправка изменений на сервер.
Вы вносите изменения непосредственно на сервер с помощью SQL.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top