2009-11-13 13 views
0

我有两个更新的SQL语句为两个SqlCommand对象更新一个DataTable与DataSet对象一个源表。当我点击更新按钮时,只更新第一个和第二个SqlCommand对象不起作用。那是什么? DataTable一次不支持两个Command对象?我写如下:两个SqlCommand对象和更新一个源表

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

您使用它的方式您不需要dataadapters和数据集...
您只需执行2个更新语句。

你可以做

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

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

+0

谢谢朱利安德威特! – RedsDevils 2009-11-16 03:25:12