【发布时间】:2021-07-01 03:41:32
【问题描述】:
我正在将加载时的数据集插入缓存
{
string command = @"SELECT Item, Location1, UpdatedLoc1, Loation2, UpdatedLoc2 FROM Stock";
SqlDataAdapter sda = new SqlDataAdapter(command, con);
DataSet ds = new DataSet();
sda.Fill(ds, "Stock");
ds.Tables["Stock"].PrimaryKey = new DataColumn[] { ds.Tables["Stock"].Columns["Item"] };
Cache.Insert("DATASET", ds);
gvStockItems.DataSource = ds;
gvStockItems.DataBind();
}
在 GridView 更新事件中我正在更新缓存
if (Cache["DATASET"] != null)
{
DataSet ds = (DataSet)Cache["DATASET"];
DataRow dr = ds.Tables["Stock"].Rows.Find(e.Keys["Item"]);
dr["Location1"] = e.NewValues["Location1"];
dr["Location2"] = e.NewValues["Location2"];
Cache.Insert("DATASET", ds);
gvStockItems.EditIndex = -1;
GetDataFromCache();
}
然后使用da.Update() as 将数据保存回数据库
using (SqlConnection con = new SqlConnection(cs))
{
SqlDataAdapter da = new SqlDataAdapter("SELECT Item, Location1, UpdatedLoc1, Loation2, UpdatedLoc2 FROM Stock", con);
DataSet ds = (DataSet)Cache["DATASET"];
string UpdateQuery = "UPDATE Stock SET Location1=@Location1, Loation2 =@Loation2 WHERE Item=@Item";
SqlCommand update = new SqlCommand(UpdateQuery, con);
update.Parameters.Add("@Item", SqlDbType.VarChar, 50, "Item");
update.Parameters.Add("@Location1", SqlDbType.Int, 0, "Location1");
update.Parameters.Add("@Loation2 ", SqlDbType.Int, 0, "Loation2");
da.UpdateCommand = update;
da.Update(ds, "Stock");
}
如果Location1 的值已修改,我需要将数据库表列UpdatedLoc1 更新为当前日期,如果Location2 的值已修改,我需要将UpdatedLoc2 列更新。
如何使用RowState更改方法实现这一点?
【问题讨论】:
标签: c# asp.net sql-server