如何判断Sql更新是否完成
经常在删除数据时,由于webserver到dbserver有一定的时效,程序要等待执行完成才能进行下一步,否则可能显示错误的结果,比如删除一条记录再返回列表后,列表上还显...
经常在删除数据时,由于web server到db server有一定的时效,程序要等待执行完成才能进行下一步,否则可能显示错误的结果,比如删除一条记录再返回列表后,列表上还显示被删除的记录,请问该怎么避免这样的问题?
我的笨方法是用 while 死循环等待,如下:
cmd.CommandText = "delete from tablename where id=" + id;
int n=cmd.ExecuteNonQuery();
if (n == 1)
{
cmd.CommandText = "select id from tablename where id=" + id;
while (cmd.ExecuteScalar() != null && n < 100000) { n++; }
}
感觉这个不是好的办法,如果也是这个方法就不要回了
如果用事务处理的话,又怎么判断提交成功且完成? 展开
我的笨方法是用 while 死循环等待,如下:
cmd.CommandText = "delete from tablename where id=" + id;
int n=cmd.ExecuteNonQuery();
if (n == 1)
{
cmd.CommandText = "select id from tablename where id=" + id;
while (cmd.ExecuteScalar() != null && n < 100000) { n++; }
}
感觉这个不是好的办法,如果也是这个方法就不要回了
如果用事务处理的话,又怎么判断提交成功且完成? 展开
展开全部
cmd.ExecuteNonQuery是有返回值的,>0 表示成功,否则失败
靠这个判断就可以了啊
靠这个判断就可以了啊
更多追问追答
追问
按你所说, 执行下来 n应该还是1,事实是执行下来 n>1是常有的事,有时候 n甚至超过 1000(一般是远程数据库会产生这个结果)
追答
我说的就是>0啊,超过1000不也是>0嘛,这不是远不远程数据的问题。
cmd.ExecuteNonQuery 这个返回值是受印象数据的行数,所以如果是0,就说明一条都没修改,如果是负数就表示出错了,这两种情况不都是没完成操作嘛。
2014-01-19
展开全部
有点奇怪啊。
你用的是什么数据库啊?
正常情况下, 数据库调用 ExecuteNonQuery(); 的时候, 就是直到 执行成功之后, 才返还结果的啊。
返回的是 更新的 行数。
如果 sql 语句没写对,或者数据库连接不上, 就会抛出异常。
你用的是什么数据库啊?
正常情况下, 数据库调用 ExecuteNonQuery(); 的时候, 就是直到 执行成功之后, 才返还结果的啊。
返回的是 更新的 行数。
如果 sql 语句没写对,或者数据库连接不上, 就会抛出异常。
追问
按你所说, 执行下来 n应该还是1,事实是执行下来 n>1是常有的事,有时候 n甚至超过 1000(一般是远程数据库会产生这个结果)
追答
SqlCommand.ExecuteNonQuery 方法
对连接执行 Transact-SQL 语句并返回受影响的行数。
对于 UPDATE、INSERT 和 DELETE 语句,返回值为该命令所影响的行数。
如果正在执行插入或更新操作的表上存在触发器,则返回值包括受插入或更新操作影响的行数以及受一个或多个触发器影响的行数。
对于其他所有类型的语句,返回值为 -1。 如果发生回滚,则返回值也是 -1。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
删除成功后,在返回列表的时候,重新读取数据。可以用Response.Redirect("列表页面.aspx") 跳到列表页面;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
代码真有意思,虽然不太清楚你要表达什么,但是你确定你写的方法能解决你的问题
追问
确定能,我已经这么用了几年了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
其实数据库里面面已经刷新了。
只要刷新一下datagradeview就可以了,就是再调用一下显示数据库内容的代码。
只要刷新一下datagradeview就可以了,就是再调用一下显示数据库内容的代码。
追问
按你的方法如果可以的话, 执行下来 n应该还是1,事实是执行下来 n>1是常有的事,有时候 n甚至超过 1000(一般是远程数据库会产生这个结果)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询