我想的是在数据库里加一个状态,被一个人点击后就会更新状态,别的人点击时查询已更新的状态就返回false,但还有问题就是,如果多人同时点击同一个未更新状态的数据,这里应会出问题,怎么样才能防止多人同时点击同一条数据!!!请大家帮忙提提建议!!!
protected void DataGrid1_ItemCommand(object source, DataGridCommandEventArgs e)
{
string id = DataGrid1.DataKeys[e.Item.ItemIndex].ToString();
string ssql = "select * from 数据表 with(tablockx) where ID='" + id + "'";
SqlDataReader dr = SQLHelper.Order(ssql);
string a = dr["状态"].ToString();
dr.Close();
if (a == "处理中")
{
Response.Write("false!");
}
else
{
string usql = "update 数据表 with(tablockx) set 状态='处理中' where ID='" + id + "'";
int i=SQLHelper.ExecuteSql(usql);
if (i > 0)
{
Response.Write("ture!");
}
else
{
Response.Write("false!");
}
}
}asp.netsql serverC#数据库
protected void DataGrid1_ItemCommand(object source, DataGridCommandEventArgs e)
{
string id = DataGrid1.DataKeys[e.Item.ItemIndex].ToString();
string ssql = "select * from 数据表 with(tablockx) where ID='" + id + "'";
SqlDataReader dr = SQLHelper.Order(ssql);
string a = dr["状态"].ToString();
dr.Close();
if (a == "处理中")
{
Response.Write("false!");
}
else
{
string usql = "update 数据表 with(tablockx) set 状态='处理中' where ID='" + id + "'";
int i=SQLHelper.ExecuteSql(usql);
if (i > 0)
{
Response.Write("ture!");
}
else
{
Response.Write("false!");
}
}
}asp.netsql serverC#数据库
加一个标志位呗,更新过一次之后设为false,更新前先读取标志位,如果是false就不更新
{
不让重复更新的代码
}
加一个标志位呗,更新过一次之后设为false,更新前先读取标志位,如果是false就不更新
并发情问下,这个跟我那段代码出现的问题是一样的~
where (select 字段 from table) is null