今天在使用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();
这样就能获取数据了。