public void Update()
        {
            Form3 f3 = new Form3(this);
            int selectRow = dataGV.CurrentRow.Index;
            string MName = dataGV.Rows[selectRow].Cells[2].Value.ToString().Trim();
            string source = "server=PC-201111301259;" + "integrated security=SSPI;" + "database=mystudy";
            string select = "UPDTAE learning SET USERID="+f3.txtRESOUCEID.Text.Trim()+"WHERE RESOUCEID= " + MName;
            SqlConnection conn = new SqlConnection(source);
            conn.Open();
            SqlCommand cmd = new SqlCommand(select, conn);
            int rowsReturned = cmd.ExecuteNonQuery();
            conn.Close();提示sql语句‘=’附近有错误~~~求高人指点,我的为什么错了?

解决方案 »

  1.   

    ls说的都对的,就是拼接的sql语句里where 前面加个空格!
      

  2.   


    where前面少个空格用string.Format 会不会更好一些呢。字符串拼接StringBuild也是不错的选择。
      

  3.   


    public void Update()
      {
      Form3 f3 = new Form3(this);
      int selectRow = dataGV.CurrentRow.Index;
      string MName = dataGV.Rows[selectRow].Cells[2].Value.ToString().Trim();
      string source = "server=PC-201111301259;" + "integrated security=SSPI;" + "database=mystudy";
      string select = "UPDTAE learning SET USERID="+f3.txtRESOUCEID.Text.Trim()+" WHERE RESOUCEID= " + MName;
      SqlConnection conn = new SqlConnection(source);
      conn.Open();
      SqlCommand cmd = new SqlCommand(select, conn);
      int rowsReturned = cmd.ExecuteNonQuery();
      conn.Close();
      

  4.   

    SET USERID="+f3.txtRESOUCEID.Text.Trim()+" WHERE RESOUCEID= " + MName
    //你的USERID是数字类型,而你的f3.txtRESOUCEID.Text.Trim()却是string类型,紧好转换一下RESOUCEID =等号前加个空格
      

  5.   

    同志们,我看了下,不是where前面少空格的问题,是不是我的f3.txtUSERID.Text.Trim()根本都没有取到任何东西,应该提示的是USERID后面的‘=’提示错误~~!!求高手指教。
      

  6.   


    我这个是sql语句的拼接,不牵扯类型转换。如果是我要把textbox里面的数据输入到数据表中,是不是就要类型转换了?我是这么认为的。
      

  7.   

    调试一下,看看sql文就知道了,可能是你说的也可能是数据类型的问题,varchar类型的要加引号的,数字类型的就不用了。
      

  8.   

    UPDTAE learning SET USERID= WHERE RESOUCEID= 278
    引用sql文的结果是这个样子的,果然是f3.txtUSERID.Text.Trim()没有取到东西,有没有能帮我改改的。
      

  9.   

    USERID是varchar或者nvarchar的话,拼接的话要要注意,where前面的空格是要有的 string select = "UPDTAE learning SET USERID='"+f3.txtRESOUCEID.Text.Trim()+"' WHERE RESOUCEID= '"+ MName+"'";
    用string.Format也可以
    string.Format("UPDTAE learning SET USERID='{0}' where RESOUCEID='{1}'",f3.txtRESOUCEID.Text.Trim(),MName)
      

  10.   


    没取到值,那就调试啊。TextBox你输入了值怎么回去不到值呢??
      

  11.   

    要么f3.txtUSERID.Text.Trim()没有内容时提示错误,要么对USERID设为空值.我觉得提示错误更友好。
    设为空值可以string userID=f3.txtUSERID.Text.Trim()==""?"NULL":f3.txtUSERID.Text.Trim();
    可以用这个userID代替f3.txtUSERID.Text.Trim(),前提是数据库中USERID列允许空值存在
      

  12.   

    f3.txtUSERID.Text.Trim()你这个是另外一个窗体的TextBox把,你看那边窗体的TextBox有没有值?
      

  13.   

    变量有没有值,自己先测试
    除了大家说得缺少空格,还缺少单引号(')吧,UPDTAE learning SET USERID='"+f3.txtRESOUCEID.Text.Trim()+"WHERE 
      

  14.   


    string strSQL=@" UPDTAE learning SET USERID='"+f3.txtRESOUCEID.Text.Trim()+"' WHERE RESOUCEID= '" + MName+"'
      

  15.   

    好像就是这个问题,窗体间传值的问题,我在这里new了一下,把form3的值没有传过来,传的都是空的。求解啊~~~~~~~~~~~~~~~~~~~
      

  16.   


    自己定义一个类,设置一个字段保存你传过来的TextBox值
      

  17.   

    if(!string.IsNullOrEmpty(f3.txtRESOUCEID.Text.Trim())){
    string strSQL=@" UPDTAE learning SET USERID='"+f3.txtRESOUCEID.Text.Trim()+"' WHERE RESOUCEID= '" + MName+"'
    }你最好跟一下为什么界面没有传值过来!
      

  18.   

    where 前面空格
    如果USERID为字符类型,后面的内容就要引号引起来。
      

  19.   

    你先把sql输出到log里,然后在数据库里执行一下,就知道问题了。