Как сохранить значение набора данных в базе данных - PullRequest
1 голос
/ 09 января 2012

Я пытаюсь сохранить изменения своего набора данных в базе данных через 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 sales=@sales,GameStatus=@gameStatus,QOH=@qoh, SalesRatio=@sr,PeriodSalesRatio=@psr,AvgAdjustmentRatio=@avgajdr,NewForeCastQty=@newQty,totalsales=@totSales,MAForCastQty=@movingAvgQty where locationid=@locationId and stockid=@stockId and IntervalTimeId=@periodId";
////UpdateCommand.CommandText = "update tblCurrentGameData set sales=@sales,GameStatus=@gameStatus,QOH=@qoh, SalesRatio=@sr,PeriodSalesRatio=@psr,AvgAdjustmentRatio=@avgajdr,NewForeCastQty=@newQty,totalsales=@totSales,MAForCastQty=@movingAvgQty where RecordId=@rid";
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 CurrentSalesAverage=@sav, SalesRatioAverage=@sravg where locationid=@locationId and stockid=@stockId ";
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 Ответ

0 голосов
/ 11 февраля 2012

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...