java中寫sql語句的小小細節


看如下一條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語句,這個錯誤是非常難以發現的。
如果在開發過程中出現這樣的問題,可能需要耗費我們很多時間


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM