今天在使用mysql 的like語句是,發現prepareStatement的like語句和一般的=寫法有一樣。
當要使用prepareStatement的like查詢時,按照一般寫法,都會寫成:
String sql = "select * from tablename like '%?%'";
String sqlParasValue = "2015-03-23";
pStmt =conn.prepareStatement(sql);
pStmt.setString(1, sqlParasValue);
pStmt.execute();
結果發現獲取不了數據,反而會出現sql參數異常。
在網上百度了下,好多人也遇到了這個問題,原來寫法不太一樣。
應該這么寫:
String sql = "select * from tablename like ?";
String sqlParasValue = "%" + "2015-03-23" + "%";
pStmt =conn.prepareStatement(sql);
pStmt.setString(1, sqlParasValue);//會自動添加單引號
pStmt.execute();
這樣就能獲取數據了。