executereader不执行,直接跳出try

ximenliehu 2015-08-19 10:23:06
using (SqlConnection conn = new SqlConnection(@"data source=MYDELL-PC\SQLEXPRESS;initial catalog=account;user id=sa;password=dell"))
{
conn.Open();
SqlCommand cmd = new SqlCommand("select * from [datagrid] where id='" + id + "'",conn);
SqlDataReader sdr = cmd.ExecuteReader();
if(sdr.Read())
{
try
{
string sql="update [datagrid] set name='" + name + "',sex='" + sex + "',age='" + age + "'where id ='"+id+"'";
// context.Response.Write(sql);
SqlCommand cmda = new SqlCommand(sql, conn); //到这里可以执行,name,sex,age,id,都能显示
var x = cmda.ExecuteNonQuery(); //加上这一句后直接跳出try,
if (x == 0)
{
context.Response.Write("no");
}
else
{
context.Response.Write("ok");
}
}
catch
{
context.Response.Write( "没执行" );
}
}
else
{
context.Response.Write("No");
}
我的想法是先查询id,id存在 则更新数据库,返回受影响的行数,如果更新了,就结束,先在无法更新,直接跳出了,换做insert,delete都没问题,麻烦大家看一下这段语句有没有问题。这个项目是前台对datagrid进行操作后保存所作操作。
...全文
154 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
ximenliehu 2015-08-21
  • 打赏
  • 举报
回复
问题解决 ,ajax测试返回状态时报错http:500,服务器内部错误,因为还有别的查询语句,代码逻辑有点混乱,调整后问题解决
Tiger_Zhao 2015-08-19
  • 打赏
  • 举报
回复
SqlDataReader 有游标的,读取时可能锁定了当前记录所以不能更新。
你用一个boolean变量把先状态记下来,关闭SqlDataReader后再根据状态来调用UPDATE试试。

22,298

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧