2009-11-13 26 views
0

J'ai deux instructions sql de mise à jour pour deux objets SqlCommand afin de mettre à jour un objet DataTable avec un objet DataSet vers une table source. Quand je clique sur le bouton de mise à jour qui est mise à jour seulement le premier et le deuxième objet SqlCommand ne fonctionne pas. Qu'est ce que c'est? DataTable n'a pas pris en charge deux objet de commande en même temps? J'écris comme suit:Deux objets SqlCommand et la mise à jour d'une table source

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() 

Puis-je utiliser comme ci-dessus? veuillez me signaler!

Bonjour! Aidez moi! F1 :)

Répondre

2

La façon dont vous l'utilisez ne nécessite pas les adaptateurs de données et les jeux de données ...
Vous venez d'exécuter 2 instructions de mise à jour.

Vous pouvez juste faire

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

et DataAdapters datasets sont pour obtenir des données au client.
Modification des données côté client, puis envoi des modifications au serveur.
Vous effectuez vos modifications directement sur le serveur avec SQL.

+0

Merci juliandewit! – RedsDevils