2012-01-09 87 views
1

我想通過UpdateCommand將我的數據集更改保存到數據庫中。如何將數據集值保存到數據庫

SqlConnection con = new SqlConnection(); 
constr = ConfigurationSettings.AppSettings["ConnectionString"].ToString(); 
con.ConnectionString = constr; 

SqlCommand UpdateCommand = con.CreateCommand(); 
// SqlCommand locationstock = con.CreateCommand(); 
SqlCommand UpdateLocationStock = con.CreateCommand(); 

UpdateCommand.CommandText = "update tblCurrentGameData set [email protected],[email protected],[email protected], [email protected],[email protected],[email protected],[email protected],[email protected],[email protected] where [email protected] and [email protected] and [email protected]"; 
////UpdateCommand.CommandText = "update tblCurrentGameData set [email protected],[email protected],[email protected], [email protected],[email protected],[email protected],[email protected],[email protected],[email protected] where [email protected]"; 
UpdateCommand.Parameters.Add("@sales", SqlDbType.Decimal, 18, "sales"); 
UpdateCommand.Parameters.Add("@gameStatus", SqlDbType.Bit, 1, "GameStatus"); 
UpdateCommand.Parameters.Add("@qoh", SqlDbType.Decimal, 18, "QOH"); 
UpdateCommand.Parameters.Add("@sr", SqlDbType.Decimal, 18, "SalesRatio"); 
UpdateCommand.Parameters.Add("@psr", SqlDbType.Decimal, 18, "PeriodSalesRatio"); 
UpdateCommand.Parameters.Add("@avgajdr", SqlDbType.Decimal, 18, "AvgAdjustmentRatio"); 
UpdateCommand.Parameters.Add("@newQty", SqlDbType.Decimal, 18, "NewForeCastQty"); 
UpdateCommand.Parameters.Add("@totSales", SqlDbType.Decimal, 18, "TotalSales"); 
UpdateCommand.Parameters.Add("@movingAvgQty", SqlDbType.Decimal, 18, "MAForCastQty"); 
UpdateCommand.Parameters.Add("@stockId", SqlDbType.Int, 16, "StockId"); 
UpdateCommand.Parameters.Add("@locationId", SqlDbType.Int, 16, "LocationId"); 
UpdateCommand.Parameters.Add("@periodId", SqlDbType.Int, 16, "IntervalTimeId"); 


UpdateLocationStock.CommandText = "update tblLocationSpecificStock set [email protected], [email protected] where [email protected] and [email protected] "; 
UpdateLocationStock.Parameters.Add("@sav", SqlDbType.Decimal, 16, "CurrentSalesAverage"); 
UpdateLocationStock.Parameters.Add("@sravg", SqlDbType.Decimal, 16, "SalesRatioAverage"); 
UpdateLocationStock.Parameters.Add("@stockId", SqlDbType.Int, 16, "StockId"); 
UpdateLocationStock.Parameters.Add("@locationId", SqlDbType.Int, 16, "LocationId"); 

da.UpdateCommand = UpdateCommand; 
da.Update(gameData,"GameData"); 

da.UpdateCommand = UpdateLocationStock; 

da.Update(gameData.Tables["LocationStockData"]); 
gameData.AcceptChanges(); 

我有我的數據集「GAMEDATA」的變化,但這些變化都不會保存在數據庫:

我使用這個代碼。 我在網上搜索解決方案,但到處都找到類似的解決方案。我被困在這個問題 有人可以幫助我,我哪裏出錯了嗎?或者如果有任何關於如何將數據集存儲到數據庫的新建議?

+1

如果你把這個降到最低限度的工作(或者你的情況,非工作)的例子,它可能會有所幫助。您當然可以編寫一些測試代碼來構建適當的'DataSet'實例,您可以嘗試將其保存到數據庫中。 – 2012-01-09 12:26:09

+0

我嘗試使用測試代碼來更新一些值,併成功更新了數據庫。但是相同的部分不適用於這段代碼。 – Surbhi 2012-01-09 12:28:07

+0

在這種情況下,我要檢查的第一件事是您嘗試基於更新的DataSet實例中每行的RowState。 – 2012-01-09 12:29:20

回答

0

如果你想對數據庫應用更改,你應該在你的命令上有標準,這是非常重要的,因爲我只是意識到,一旦我有這個問題。我的意思是添加標準。我的意思是 - >「update ... where id = 1」 最好,數據集喜歡主鍵或唯一鍵來保存對數據庫的更改。 如果可以,請嘗試使用一個主鍵來更新而不是組合鍵。

相關問題