一段修改程序,运行后老显示“出错,where附近出错” 求大神教育啊
 private void button3_Click(object sender, EventArgs e)
        {
            if (textBox1.Text.Trim() == "")
            {
                MessageBox.Show("请输入班级编号!");
                return;
            }
            SqlConnection conn = new SqlConnection(strcon);
            string sqlStr = "update [banjiguanli] set";            if (textBox2.Text.Trim().ToString() != "")
            { sqlStr += "[bjmc]='" + textBox2.Text.Trim() + "',"; }
            if (textBox3.Text.Trim() != "")
            { sqlStr += "[bzr]='" + textBox3.Text.Trim() + "',"; }
            if (textBox4.Text.Trim() != "")
            { sqlStr += "[zrs]='" + textBox4.Text.Trim() + "',"; }
            if (textBox5.Text.Trim() != "")
            { sqlStr += "[zydm]='" + textBox5.Text.Trim() + "',"; }            sqlStr += " where bjbh='" + textBox1.Text.Trim() + "'";
            SqlCommand cmd = new SqlCommand(sqlStr, conn);
             
            try
            {
                conn.Open();
                int cnm = cmd.ExecuteNonQuery();
                if (cnm == 1)    //如果受影响的行数为1则修改成功
                { MessageBox.Show("修改成功"); }
                else
                { MessageBox.Show("数据库中没有此班级!"); }
                this.banjiguanliTableAdapter.Fill(this.FATADataSet.banjiguanli);
            }
            catch (Exception ex)
            { MessageBox.Show("出错,没有完成班级信息的修改!" + ex.Message); }
            finally
            {
                conn.Close();
                
            }
        }

解决方案 »

  1.   

    { sqlStr += "[zydm]='" + textBox5.Text.Trim() + "',"; }  sqlStr += " where bjbh='" + textBox1.Text.Trim() + "'";
    ----
    update table set c1=xxx,b1=yyyy, wehre ....
      

  2.   

    建议你用SqlParameter而不是通过string去拼接
      

  3.   

    using System.Text; private void button3_Click(object sender, EventArgs e)
      {
      if (textBox1.Text.Trim() == "")
      {
      MessageBox.Show("请输入班级编号!");
      return;
      }
      SqlConnection conn = new SqlConnection(strcon);
      StringBuilder sb = new StringBuilder();
      sb.Append("update [banjiguanli] set ");
      if (textBox2.Text.Trim().ToString() != "")
      { 
           sb.Append(" [bjmc]='" + textBox2.Text.Trim() + "', ");
      }
      if (textBox3.Text.Trim() != "")
      { 
          sb.Append(" [bzr]='" + textBox3.Text.Trim() + "', ");
      }
      if (textBox4.Text.Trim() != "")
      {
         sb.Append(" [zrs]='" + textBox4.Text.Trim() + "',");
      }
      if (textBox5.Text.Trim() != "")
      { 
             sb.Append(" [zydm]='" + textBox5.Text.Trim() + "' ");
      }
      sb.Append(" where bjbh='" + textBox1.Text.Trim() + "'");
      SqlCommand cmd = new SqlCommand(sb.ToString(), conn);

      try
      {
      conn.Open();
      int cnm = cmd.ExecuteNonQuery();
      if (cnm == 1) //如果受影响的行数为1则修改成功
      { MessageBox.Show("修改成功"); }
      else
      { MessageBox.Show("数据库中没有此班级!"); }
      this.banjiguanliTableAdapter.Fill(this.FATADataSet.banjiguanli);
      }
      catch (Exception ex)
      { MessageBox.Show("出错,没有完成班级信息的修改!" + ex.Message); }
      finally
      {
      conn.Close();
       
      }
      }
      

  4.   

    嗯,我试了,如过所有信息都修改,就没错,如果只修改1项或几项就还是会出现where附近出错大大
      

  5.   

    update 语句

    update table名字  set 列1=值,列2=值...... 最后一个列 后面不要加逗号学什么语言需要先把基本的语法学好
      

  6.   

    而我的另一段代码就没有出现这个问题  
    private void button3_Click(object sender, EventArgs e)
            {
                if (textBox1.Text.Trim() == "")
                {
                    MessageBox.Show("请输入学号!");
                    return;
                }
                SqlConnection conn = new SqlConnection(strcon);
                string sqlStr = "update [xueshengdananguanli] set";            if (textBox2.Text.Trim().ToString() != "")
                {
                    sqlStr += "[xm]='" + textBox2.Text.Trim() + "', ";
                }            if (textBox3.Text.Trim() != "")
                {
                    sqlStr += "[csrq]='" + textBox3.Text.Trim() + "', ";
                }            if (textBox4.Text.Trim() != "")
                {
                    sqlStr += "[jg]='" + textBox4.Text.Trim() + "', ";
                }            if (textBox5.Text.Trim() != "")
                {
                    sqlStr += "[zzmm]='" + textBox5.Text.Trim() + "', ";
                }            if (textBox6.Text.Trim() != "")
                {
                    sqlStr += "[sfzh]='" + textBox6.Text.Trim() + "', ";
                }            if (textBox6.Text.Trim() != "")
                {
                    sqlStr += "[zydm]='" + textBox7.Text.Trim() + "', ";
                }            if (FileNamePath != "")
                {
                    sqlStr += "[zp]=@zp,";
                }
                sqlStr += "[xb]=@xb";            sqlStr += " where xh='" + textBox1.Text.Trim() + "'";            SqlCommand cmd = new SqlCommand(sqlStr, conn);            if (radioButton1.Checked == true) //如果性别是男
                { cmd.Parameters.Add("@xb", SqlDbType.Bit).Value = true; }
                else if (radioButton2.Checked == true) //如果性别是女
                { cmd.Parameters.Add("@xb", SqlDbType.Bit).Value = false; }
                else
                {
                    MessageBox.Show("请选择性别");
                    return;
                }
                if (FileNamePath != "")          //如果选择了照片
                {
                    FileStream fs = null;
                    fs = new FileStream(FileNamePath, FileMode.Open, FileAccess.Read);
                    MemoryStream mem = new MemoryStream();
                    byte[] data1 = new byte[fs.Length];
                    fs.Read(data1, 0, (int)fs.Length);
                    cmd.Parameters.Add("@zp", SqlDbType.VarBinary);   //这里选择VarBinary类型  
                    cmd.Parameters["@zp"].Value = data1;              //把照片变化成字节数组
                }
                try
                {
                    conn.Open();
                    int yxh = cmd.ExecuteNonQuery();
                    if (yxh == 1)    //如果受影响的行数为1则修改成功
                    { MessageBox.Show("修改成功"); }
                    else
                    { MessageBox.Show("数据库中没有此学生!"); }
                    this.xueshengdananguanliTableAdapter.Fill(this.FATADataSet.xueshengdananguanli);
                }
                catch (Exception ex)
                { MessageBox.Show("出错,没有完成成绩的修改!" + ex.Message); }
                finally
                {
                    conn.Close();
                    FileNamePath = "";
                }
            }问题
      

  7.   

    不是所有都修改,是最后一个必须要选择才可以,再给你优化一下,但是至少需要有一个需要修改项,如果一个都没有输入的话,还是会报错的,你需要处理一下,就像你处理班级编号TextBox1那样
    using System.Text; private void button3_Click(object sender, EventArgs e)
    {
        if (textBox1.Text.Trim() == "")
        {
               MessageBox.Show("请输入班级编号!");
               return;
         }
        SqlConnection conn = new SqlConnection(strcon);
        StringBuilder sb = new StringBuilder();
        sb.Append("update [banjiguanli] set ");
        if (textBox2.Text.Trim().ToString() != "")
       {
            sb.Append(" [bjmc]='" + textBox2.Text.Trim() + "', ");
        }
        if (textBox3.Text.Trim() != "")
        {
            sb.Append(" [bzr]='" + textBox3.Text.Trim() + "', ");
        }
        if (textBox4.Text.Trim() != "")
        {
              sb.Append(" [zrs]='" + textBox4.Text.Trim() + "',");
          }
          if (textBox5.Text.Trim() != "")
         {
              sb.Append(" [zydm]='" + textBox5.Text.Trim() + "',");
           }
           string strSQL = sb.ToString().TrimEnd(',')
           strSQL+= where bjbh='" + textBox1.Text.Trim() + "'";
           SqlCommand cmd = new SqlCommand(strSQL, conn);
            try
            {
                  conn.Open();
                  int cnm = cmd.ExecuteNonQuery();
                 if (cnm == 1) //如果受影响的行数为1则修改成功
                 { 
                     MessageBox.Show("修改成功"); 
                  }
                 else
                 {
                        MessageBox.Show("数据库中没有此班级!");
                   }
                  this.banjiguanliTableAdapter.Fill(this.FATADataSet.banjiguanli);
            }
           catch (Exception ex)
           { 
                MessageBox.Show("出错,没有完成班级信息的修改!" + ex.Message); 
            }
            finally
           {
                  conn.Close();
            }
      }