当前位置:编程学习 > C#/ASP.NET >>

在线等,急,小弟快下岗了...求救提示{"关键字 'where' 附近有语法错误。"}

string updateSQL = "";
            updateSQL += "proclass='" + txtyys.SelectedItem.Value + "',";
            updateSQL += "proname='" + myClass.replace(txtitle.Text) + "',";
            updateSQL += "proimgl='" + myClass.replace(txtspic.Text) + "',";
            updateSQL += "proimgb='" + myClass.replace(txtpic.Text) + "',";
            dbobj.getcom("update [pro] set " + updateSQL + " where id= " + Convert.ToInt32(Request.QueryString["id"]));
            Page.RegisterStartupScript("alert", @"<script   LANGUAGE=JavaScript>alert('修改成功');window.location='index.aspx';</script>");


提示{"关键字 'where' 附近有语法错误。"} --------------------编程问答-------------------- 最后一个 updateSQL +=的逗号去掉
学习传参数的方法吧

--------------------编程问答-------------------- updateSQL += "proimgb='" + myClass.replace(txtpic.Text) + "',";
改成:
updateSQL += "proimgb='" + myClass.replace(txtpic.Text) + "' ";
不要后面那个 逗号 --------------------编程问答--------------------
引用 1 楼  的回复:
最后一个 updateSQL +=的逗号去掉
学习传参数的方法吧


+1 --------------------编程问答-------------------- 最后那个逗号去掉
引用楼主  的回复:
string updateSQL = "";
  updateSQL += "proimgb='" + myClass.replace(txtpic.Text) + "',";


改成
updateSQL += "proimgb='" + myClass.replace(txtpic.Text) + "'";
--------------------编程问答-------------------- 多了个逗号  貌似你的where id=“”  只有开引号没有关引号 --------------------编程问答-------------------- --------------------编程问答-------------------- updateSQL += "proimgb='" + myClass.replace(txtpic.Text) + "',";

红色逗号 要去掉
--------------------编程问答-------------------- 你这样拼字符串把自己都拼晕了吧?!
--------------------编程问答-------------------- 一个一个打印不就知道了,先不要update --------------------编程问答-------------------- +1  这样就要 下岗了?~~~~~~~~~~~~~~
引用 1 楼  的回复:
最后一个 updateSQL +=的逗号去掉
学习传参数的方法吧
--------------------编程问答-------------------- 拼接字符串一定要细心,什么逗号,引号,出错就调试下,将SQl语句拷贝出来看看就可以找到原因 --------------------编程问答-------------------- 小伙子 设个断点调试下
--------------------编程问答-------------------- 这个不是细不细心的问题是  怎么解决问题 --------------------编程问答-------------------- 这个 找那么久么..
还是下岗再培训吧 --------------------编程问答-------------------- string updateSQL = "";
  updateSQL += "proclass='" + txtyys.SelectedItem.Value + "',";
  updateSQL += "proname='" + myClass.replace(txtitle.Text) + "',";
  updateSQL += "proimgl='" + myClass.replace(txtspic.Text) + "',";
  updateSQL += "proimgb='" + myClass.replace(txtpic.Text) + "',";
  dbobj.getcom("update [pro] set " + updateSQL + " where id= '" + Request.QueryString["id"]+"'");
--------------------编程问答--------------------
引用 1 楼  的回复:
最后一个 updateSQL +=的逗号去掉
学习传参数的方法吧

+1 --------------------编程问答-------------------- 这么基础的错误还找不到,,看不清楚就不要分那么多,误导自己,看来是真要下岗了。。。 --------------------编程问答-------------------- 小伙加油啊~ --------------------编程问答-------------------- 剛開始接觸sql的吧. --------------------编程问答-------------------- 莫急躁 --------------------编程问答-------------------- 你在这里打个断点!然后看一下最后拼装的sql语句是什么,拿到查询分析器里执行一下,自然就找到原因了,对了,提醒你一下,如果ID是int类型的话就不要用引号了! --------------------编程问答--------------------
你如果继续抱着这个不细心的态度  下岗是早晚的事情啊  慎重`

实在拼不会 你就用占位符 --------------------编程问答-------------------- 晕,这么基础的问题还出错,再说了,你可以DEBUG把SQL拿出来啊,纳闷,你还是下岗培训段时间吧,还有就是,你这样拼接会把你自己拼晕的,学习传参吧 --------------------编程问答-------------------- 搞程序要细心啊... --------------------编程问答-------------------- 尽量不要用这种字符串拼接的方式,容易出错,还不安全。
我一般是用这种方式来做的。

string sql = " proclass = '{0}',proname = '{1}',proimgl = '{2}',proimgb = '{3}' ";
            string updateSql = string.Format(sql, txtyys.SelectedItem.Value, myClass.replace(txtitle.Text), 
                myClass.replace(txtspic.Text), myClass.replace(txtpic.Text));
--------------------编程问答--------------------
引用 25 楼  的回复:
尽量不要用这种字符串拼接的方式,容易出错,还不安全。
我一般是用这种方式来做的。
C# code

string sql = " proclass = '{0}',proname = '{1}',proimgl = '{2}',proimgb = '{3}' ";
            string updateSql = string.Format(sql, txtyys.Select……


如果值里面有单引号,有百分号,有{}号,会不会出现?

--------------------编程问答-------------------- 最后一个条件多了一个逗号。。。
不要急躁,心平气和。。 --------------------编程问答-------------------- 要学会用 String.Format --------------------编程问答-------------------- 在sql字符串中的那些个{0},{1},是占位符,在使用String.Format方法的时候,会被后面的参数替换掉,只要注意一下占位符中的下标和后面参数的数量不要弄错就好了。 --------------------编程问答-------------------- 回炉重造吧 --------------------编程问答-------------------- 断点跟踪下,就看到了啊,多了个逗号 --------------------编程问答-------------------- 直接断点了,看下拼出来什么语句就知道了。 --------------------编程问答-------------------- It is An additional comma which causes this error --------------------编程问答-------------------- 教你几个处理类似问题的方法吧。
1、调试,把语句粘贴出来在数据库环境下执行一看就知道那的错误了。
2、其实每个要执行的SQL语句都是一个字符串,字符串无非就是两个冒号之间的语句,比如:
strSQL=“”,不管怎样你都要注意字符间的拼接,“”+“”这个肯定是对的,你只需要看这个之间的拼接起来的SQL是否正确就知道那里出错了。
学会这两点基本所有这样的问题你就不用求人了。 --------------------编程问答-------------------- 用太多+号会把人弄晕的
个人喜欢用  $+名称  做sql语句
然后replace一下,速度可能慢一点,不过这样不会晕 --------------------编程问答-------------------- 对对,最后一个逗号不要了 --------------------编程问答-------------------- 另外lZ:
1,字符串尽量别用这种拼接,用StringBuilder的Append效率高。
2,还有传参的字符串用String.Formart,或者上面的AppendFormart()显得格式清晰不容易出错 --------------------编程问答-------------------- 下岗吧!加工资然后再就业. --------------------编程问答-------------------- 当年我也是这么菜 --------------------编程问答-------------------- 这贴居然这么热闹... --------------------编程问答-------------------- 搞得这么复杂, 这么多语句的?  缩成一两句话,合在一起。  这样容易发现问题 --------------------编程问答--------------------
引用 40 楼  的回复:
这贴居然这么热闹...

简单的问题,太多人了。。。。。复杂的问题又没有人郁闷 --------------------编程问答-------------------- 好不容易碰见一个 大家都会的,那还不赶紧来。 --------------------编程问答-------------------- 变量跟踪一下 在SQL运行 --------------------编程问答--------------------
引用 37 楼  的回复:
另外lZ:
1,字符串尽量别用这种拼接,用StringBuilder的Append效率高。
2,还有传参的字符串用String.Formart,或者上面的AppendFormart()显得格式清晰不容易出错


先实现在考虑效率  在没有实现的情况下 效率 扯淡 --------------------编程问答--------------------
引用 2 楼  的回复:
updateSQL += "proimgb='" + myClass.replace(txtpic.Text) + "',";
改成:
updateSQL += "proimgb='" + myClass.replace(txtpic.Text) + "' ";
不要后面那个 逗号

+1 --------------------编程问答-------------------- 来看过逗号了。。。。。。。。 --------------------编程问答-------------------- 期待下岗. --------------------编程问答--------------------
引用 48 楼  的回复:
期待下岗.
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,