我正在尝试通过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'发生了变化,但这些更改未保存在数据库中。 我在网上搜索解决方案,但到处都找到了类似的解决方案。我被这个问题困扰了 有人可以帮助我在哪里出错吗?或者如果有关于如何将我的数据集存储到数据库的任何新建议。
答案 0 :(得分:0)
如果你想对数据库应用更改,你应该对你的命令有标准,这非常重要,因为我刚刚意识到,一旦我遇到这个问题。我在我的查询中添加标准。我的意思是 - > “更新......其中id = 1” 优选地,数据集喜欢用于保存对数据库的更改的主键或唯一键。 如果可以,请尝试使用一个主键来更新而不是复合键。