2012-01-09 2 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, который вы можете попробовать сохранить в базе данных. –

+0

Я попытался использовать тестовый код, чтобы обновить некоторые значения, и он успешно обновил databasae. Но эта часть не работает с этим фрагментом кода. – Surbhi

+0

В этом случае первое, что я хотел бы проверить, это RowState в каждой строке экземпляра DataSet, на котором вы пытаетесь установить обновления. –

ответ

0

Если вы хотите применить изменения в базе данных, у вас должны быть критерии по вашей команде. Это очень важно, потому что я просто понял, как только у меня возникла эта проблема. и я добавляю критерии к моему запросу. Я имею в виду -> «обновление ... где id = 1» Предпочтительно, Dataset нравится первичный ключ или уникальный ключ для сохранения изменений в базе данных. Если вы можете, попробуйте использовать один первичный ключ для обновления вместо составного ключа.

Смежные вопросы