public static void main(String[] args) {
Object[] para = new Object[]{"c"};
List list = excuteQuery("select * from s_user t where t.userName like '%?%'",para);
for (Object[] o : list) {
for (Object ob : o) {
System.out.print(ob + "-");
}
System.out.println();
}
}
结果报错如下:
java.sql.SQLException: Parameter index out of range (1 > number of parameters, which is 0).
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1056)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:957)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:927)
at com.mysql.jdbc.PreparedStatement.checkBounds(PreparedStatement.java:3279)
at com.mysql.jdbc.PreparedStatement.setInternal(PreparedStatement.java:3263)
at com.mysql.jdbc.PreparedStatement.setString(PreparedStatement.java:4087)
at com.mysql.jdbc.PreparedStatement.setObject(PreparedStatement.java:3513)
at org.apache.commons.dbcp.DelegatingPreparedStatement.setObject(DelegatingPreparedStatement.java:166)
at com.nms.common.db.ConnectionManager.excuteQuery(ConnectionManager.java:86)
at com.nms.common.db.ConnectionManager.main(ConnectionManager.java:20)
Exception in thread "main" java.lang.NullPointerException
at com.nms.common.db.ConnectionManager.main(ConnectionManager.java:21)
后来才知道,模糊查询时要这样写:
public static void main(String[] args) {
Object[] para = new Object[]{"%c%"};
List list = excuteQuery("select * from s_user t where t.userName like ?",para);
for (Object[] o : list) {
for (Object ob : o) {
System.out.print(ob + "-");
}
System.out.println();
}
}