看如下一條sql語句
String sql="SELECT * FROM bookBasicInfo,bookTypeInfo WHERE bookBasicInfo.BelongType=bookTypeInfo.BookTypeID AND bookBasicInfo.bookName like ? AND" + "bookBasicInfo.BelongType=?"; ps.setString(1, "%"+bookName+"%"); ps.setInt(2, typeId);
這是一條根據圖書名稱和圖書類型進行查詢的sql語句,可能咋一看並沒有什么毛病,如果將
上述sql語句在java環境中執行會拋出如下異常
java.sql.SQLException: ORA-00933: SQL 命令未正確結束
這個問題的錯誤原因,就是一個空格的問題,由於sql過長,用+進行拼接,但是在用+進行拼接的時候是原樣進行拼接,
在“+”那處,會變成
...bookBasicInfo.bookName like ? ANDbookBasicInfo.BelongType=?
這樣的sql在執行的過程中,當然會報錯啦!
解決方式:只需要在最后一個AND后面或者bookBasicInfo.BelongType前面添加“空格”,問題解決了
如果不細細的觀察sql語句,這個錯誤是非常難以發現的。
如果在開發過程中出現這樣的問題,可能需要耗費我們很多時間