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进行操作后保存所作操作。
...全文
106 点赞 收藏 2
写回复
2 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
ximenliehu 2015-08-21
问题解决 ,ajax测试返回状态时报错http:500,服务器内部错误,因为还有别的查询语句,代码逻辑有点混乱,调整后问题解决
回复
Tiger_Zhao 2015-08-19
SqlDataReader 有游标的,读取时可能锁定了当前记录所以不能更新。
你用一个boolean变量把先状态记下来,关闭SqlDataReader后再根据状态来调用UPDATE试试。
回复
相关推荐
发帖
疑难问题
创建于2007-09-28

2.1w+

社区成员

MS-SQL Server 疑难问题
申请成为版主
帖子事件
创建了帖子
2015-08-19 10:23
社区公告
暂无公告