介绍
这篇文章运用简单易懂的例子给大家介绍JDBC PreparedStatement像参数报错的解决方法,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
/* * * @说明执行一条查询SQL语句,可以带参数 */公共静态List<对象[]比;excuteQuery (sql字符串、对象[]obj) { 连接康涅狄格州=零; PreparedStatement psta=零; ResultSet rs=零; List<对象[]比;iResult=零; 对象[]objArr=零; 尝试{ 康涅狄格州=getConn ();//得到链接 PreparedStatement状态=conn.prepareStatement (sql); 如果(零!=obj) { for (int i=0;我& lt;objs.length;我+ +){ 状态。setObject (i + 1, obj[我]); } } ResultSet ResultSet=state.executeQuery ();//执行查询,返回结果接集合 iResult=new ArrayList<对象[]祝辞(); .getColumnCount int数=resultSet.getMetaData () ();//一共有多少列数据 而(resultSet.next ()) { objArr=新对象(数); for (int i=1;我& lt;=计数;我+ +){ objArr [i - 1]=resultSet.getObject(我);//增加到返回的集合中 } iResult.add (objArr); } }捕捉(异常e) { e.printStackTrace (); iResult=零; 最后}{ 尝试{ 如果(rs !=null) { rs.close (); } 如果(psta !=null) { psta.close (); } 如果(康涅狄格州!=null) { conn.close (); } }捕获异常(e2) { } } 返回iResult; }
后来我输入这样的一个参数进行查询:
公共静态void main (String [] args) { 对象[]帕拉=new Object [] {“c"}; List<对象[]比;=excuteQuery列表(“select * from s_user t, t。用户名像& # 39;%,# 63;% & # 39;“para); (对象[]o:列表){ (对象ob: o) { system . out。打印(ob +“产生绯闻); } System.out.println (); } }
结果报错如下:
java.sql。SQLException异常:参数指标的范围(1比;参数的数量,这是0)。 com.mysql.jdbc.SQLError.createSQLException (SQLError.java: 1056) com.mysql.jdbc.SQLError.createSQLException (SQLError.java: 957) com.mysql.jdbc.SQLError.createSQLException (SQLError.java: 927) com.mysql.jdbc.PreparedStatement.checkBounds (PreparedStatement.java: 3279) com.mysql.jdbc.PreparedStatement.setInternal (PreparedStatement.java: 3263) com.mysql.jdbc.PreparedStatement.setString (PreparedStatement.java: 4087) com.mysql.jdbc.PreparedStatement.setObject (PreparedStatement.java: 3513) org.apache.commons.dbcp.DelegatingPreparedStatement.setObject (DelegatingPreparedStatement.java: 166) com.nms.common.db.ConnectionManager.excuteQuery (ConnectionManager.java: 86) com.nms.common.db.ConnectionManager.main (ConnectionManager.java: 20) 异常的线程“main"java.lang.NullPointerException 在com.nms.common.db.ConnectionManager.main (ConnectionManager.java: 21)
后来才知道,模糊查询时要这样写:
公共静态void main (String [] args) { 对象[]帕拉=new Object [] {“% c %“}; List<对象[]比;=excuteQuery列表(“select * from s_user t, t。用户名一样,# 63;“para); (对象[]o:列表){ (对象ob: o) { system . out。打印(ob +“产生绯闻); } System.out.println (); } }
关于JDBC PreparedStatement像参数报错的解决方法就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看的到。