executereader不执行,直接跳出try
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进行操作后保存所作操作。