我的更新代码是:
 private void button_xiu_Click(object sender, EventArgs e)
        {
            OleDbConnection mycn = new OleDbConnection(conStr);
        
            string cmdStr = "UPDATE STUDENT SET SNAME='" + this.tb_name.Text.Trim() + "',SNU='" + this.tb_Num.Text.Trim() + "',SCELL='" + this.tb_cel.Text.Trim() + "',SAGE='" + this.tb_age.Text.Trim() + "',SADR='" + this.tb_Adr.Text.Trim() + "',AVMEMO='" + this.tb_Bz.Text.Trim() + "',SISID='" + this.tb_xh.Text.Trim() + "'WHERE LSID=" + lsid + "";            OleDbCommand mycm = new OleDbCommand(cmdStr, mycn);
            mycn.Open();
            int n = mycm.ExecuteNonQuery();
            if (n == 1)
            {
                MessageBox.Show("更新成功");
            }
            else
            {
                MessageBox.Show("更新失败");
            }
            mycn.Close();
        }

不知道什么原因不能更新,有哪位高人帮忙指点!!!!!!!!!!!!!!

解决方案 »

  1.   

    int n = mycm.ExecuteNonQuery();
    ExecuteNonQuery没有返回值
      

  2.   


    if (n == 1)
    {
    MessageBox.Show("更新成功");
    }替换为:if (n > 0)
    {
    MessageBox.Show("更新成功");
    }
      

  3.   

    this.tb_xh.Text.Trim() + "'WHERE LSID=" + lsid + "";
    语句,where 跟前面的'没有空格吧
    你自己调试一下,看是哪步报exception
      

  4.   

    另外要说明的是:即便 n = 0 也不能证明更新失败.只能证明 sql语句的where条件找不到需要更新的条目.
      

  5.   

    你把更新数据库的命令串拷到数据库里面试试看能更新不?
    把从lable取值的代码换成一个任意值、、
    如果能成功就在打开数据库执行命令那里加个try-Catch,应该能找到异常的
      

  6.   

    1  从你的书写语法来看 "'WHERE LSID=" + lsid + "";
       "' WHERE LSID=" + lsid + "";//加一个空格
       有的地方应该家''将数据引起来,看你的数据类型吧.2  从你的代码来看,建议你对数据层再整理下,比较好!
     
      

  7.   

        最好不用拼接字符串,
       报错不?如果不 看看数据库 是否更新没  -  if(i>0)--  可能更新了多条
      报错,具体包什么错,?
      

  8.   

    我不怎么喜欢这样来拼装SQL语句,string.Format不显得更简单明了?
      

  9.   

    同样。另外在数据更新的ADO操作最好加上try...catch...捕捉异常
      

  10.   

    谢谢各楼的支持,听了大家的意见,试了一下还是出现问题,每次调试都是在
    int n = mycm.ExecuteNonQuery();这里停止并且不会报错而是直接跳转到编辑页面。
    不知道错误的原因在哪里???
      

  11.   

    首先:
    1.ExecuteNonQuery()是返回你受影响的行数。没有语法错误的话,就是你逻辑上的错误了,就是你所做的操作就没有反应,以你的判断的话就是提示更新失败
    2.Open()语句你应该跟在定义Connection对象之后,不要把Command对象都写到Open()之前去了。
    3.你在oralce的Update语句后面设置一个断点,进行调试,将执行的oracle update语句直接考出来,到数据库里新建查询链接,看直接在数据库里执行你这条语句是否有反应,有,说明你是下面程序逻辑的错误,没有反应,说明你的oracle update语句有问题。
      

  12.   

    首先:
    1.ExecuteNonQuery()是返回你受影响的行数。没有语法错误的话,就是你逻辑上的错误了,就是你所做的操作就没有反应,以你的判断的话就是提示更新失败
    2.Open()语句你应该跟在定义Connection对象之后,不要把Command对象都写到Open()之前去了。
    3.你在oralce的Update语句后面设置一个断点,进行调试,将执行的oracle update语句直接考出来,到数据库里新建查询链接,看直接在数据库里执行你这条语句是否有反应,有,说明你是下面程序逻辑的错误,没有反应,说明你的oracle update语句有问题。
      

  13.   

    是哦,WHERE前面加个空格就OK了,呵呵,
      

  14.   

    调试
    把cmdStr 字符串的值到你 的数据库执行一下,
    类似的SQL出错都可以这样做
      

  15.   

    OleDbCommand mycm = new OleDbCommand(cmdStr, mycn);
    mycn.Open();
    这两句话换个位置。。你写反了。。
      

  16.   


    换成:
    'WHERE LSID=" + lsid.Text.Trim() + "";