如何将数据集值保存到数据库中
本文关键字:数据库 保存 数据集 | 更新日期: 2023-09-27 18:19:45
我正试图通过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"中有更改,但这些更改没有保存在数据库中。我在网上搜索解决方案,但到处都能找到类似的解决方案。我被这个问题弄糊涂了有人能帮我哪里出错吗?或者是否对如何将数据集存储到数据库有任何新的建议。?
如果你想在数据库上应用更改,你的命令上应该有条件,这非常重要,因为我刚刚意识到,一旦我遇到这个问题。并且我将条件添加到我的查询中。我的意思是-->"更新…其中id=1"最好,数据集喜欢主键或唯一键来保存对数据库的更改。如果可以,请尝试使用一个主键进行更新,而不是使用组合键。