2009-11-13 3 views
0

2 개의 SqlCommand 개체에 대해 두 개의 업데이트 sql 문을 사용하여 DataSet 개체가있는 하나의 DataTable을 하나의 원본 테이블로 업데이트합니다. 업데이트 버튼을 클릭하면 첫 번째 업데이트와 두 번째 SqlCommand 객체 만 업데이트되지 않습니다. 이게 뭐야? DataTable은 한 번에 두 개의 Command 개체를 지원하지 않았습니다? 나는 다음과 같이 씁니다 :2 개의 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

당신이 그것을 사용하는 방식으로는 데이터 어댑터와 데이터 세트가 필요 없습니다.
방금 ​​2 개의 업데이트 문을 실행합니다.

당신은

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

데이터 집합을 할 수 dataadapters는 클라이언트에 데이터를 얻기위한 것입니다.
클라이언트 쪽에서 데이터를 변경 한 다음 수정 내용을 서버에 보냅니다.
SQL을 사용하여 서버에서 직접 변경하고 있습니다.

+0

감사합니다. juliandewit! – RedsDevils

관련 문제