用JDBC連接數(shù)據(jù)庫(kù),采用的是PreparedStatement進(jìn)行數(shù)據(jù)查詢,
執(zhí)行sql的時(shí)候出現(xiàn)問(wèn)題:
Caused by: com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: 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 '?' at line 1
conn = JdbcUtils.getConn();
String sql = "select * from t_user where username=? ";
ps = conn.prepareStatement(sql);
ps.setString(1, "test1");
ps.executeQuery(sql);
sql語(yǔ)句將問(wèn)號(hào)替換成字符串確定是沒(méi)有問(wèn)題可以執(zhí)行的。
其他項(xiàng)目同樣是這樣子查詢數(shù)據(jù)沒(méi)出問(wèn)題,就只有這個(gè)地方出了問(wèn)題,以為是項(xiàng)目有什么東西沒(méi)導(dǎo)進(jìn)來(lái),可是不科學(xué)啊,錯(cuò)誤信息說(shuō)的是sql語(yǔ)法出問(wèn)題。反正查半天不知道還有什么原因很煩。最后查到個(gè)跟我一樣問(wèn)題的,發(fā)現(xiàn)是 ps.executeQuery(sql); 這里出了毛病,去掉參數(shù)sql就好了。
就這問(wèn)題折騰了一小時(shí)ヽ(o`皿′o)?
果然還是不夠細(xì)心,太急躁。還要加油!
另外
關(guān)于MySQLSyntaxErrorException,除了其他語(yǔ)法錯(cuò)誤,最常見(jiàn)拋這個(gè)異常的原因是表名字段名用了mysql的關(guān)鍵字。