在学jdbc。。
一个很简单的update 语句
String sql = "update users set username = '"+username+"',userage="+userage+"where userid =" +userid ;
这么看没什么问题对吧,然后我就去测试 嗯?报错了?为什么,我不理解
java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'userid =5' at line 1
我看了很久,都没看明白,然后我就去控制端里面敲了一遍,对的呀,没错呀
mysql> update users set username = 'liudehua',userage = 28 where userid = 2;
Query OK, 1 row affected (0.01 sec)
Rows matched: 1 Changed: 1 Warnings: 0
那么到底是哪里出了问题,我在自己的idea和教材里面找不同找了好久,我看了好久都没有解决,最后我受不了了,我把老师敲的拿过来直接粘贴运行,然后,通过了。。
这我就忍不住了,这不是闹着玩吗?凭什么啊
然后我就逐字逐段分析,终于,我看到了,少一个空格!!!
知道真相的我简直就要崩溃了,一个小时啊,就因为一个空格。。然后我把这两段拿去单独打印分析,果然。。。
public class tsliejg {
public void updateUsers(int userid, String username, int userage) {
String sql = "update users set username = '" + username + "',userage=" + userage + " where userid =" + userid;
String sqi = "update users set username = '" + username + "',userage=" + userage + "where userid =" + userid;
System.out.println(sql);
System.out.println(sqi);
}
public static void main (String[]args){
new tsliejg().updateUsers(2,"wuyanzu",33);
}
}
输出结果:
update users set username = 'wuyanzu',userage=33 where userid =2
update users set username = 'wuyanzu',userage=33where userid =2
可能在代码块中看不出来,但是在输出结果里面就非常清楚的能看到,我滴龟龟,这对sql子句来说,是致命的,没有这个空格就以为这没有where条件了。。
好吧,我屈服了,我决定以后每次在执行前都要去好好看看我的sql语句有没有敲对。。。