此時程序報錯,因爲?被包含在了單引號中,PreparedStatement並不視它爲一個參數。後來上網查了相關的一些資料,發現可以這樣寫select * from table where name like?;但是在指定參數的時候把?指定爲”%”+name+”%”,name是指定的查詢條件。這樣就OK了。
一般情況下,我總是潛意識的認定了?就是取代所指定的參數,但是實際上我們可以對指定的參數進行了一定的包裝之後再傳給?,比如這裏我們在參數的前後都加了一個%,然後再傳給?
String expr = "select * from table where url like?";
pstmt =con.prepareStatement(expr);
String a="a";
pstmt.setString(1,"%"+a+"%");//自動添加單引號 (包裝後的參數)
pstmt.execute();
System.out.println(pstmt.toString());//打印sql
//會默認生成sql: select *from table where url like '%http%'