代码很简单,但是一运行就报错,将命令复制到sql里运行可以查询,用到的
字符串类型全都是Verchar2,不是char,报错显示无效的列索引,求大神支招
卡主我半天了
package cn.tedu.jdbc.day02;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
//利用ps 实现查询
public class Demo06 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Connection conn=null;
try {
conn=DbUtils.getConnection();
String sql="select*from rabin_demo where name like ?";
PreparedStatement ps=conn.prepareStatement(sql);
ps.setString(1,"%W%");
ResultSet rs= ps.executeQuery();
while(rs.next()){
//getInt(序列号),利用序列号获取值
int id=rs.getInt(1);
String name=rs.getString(2);
System.out.println(id+","+name);
}
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}finally{
DbUtils.close(conn);
}
}
}
报错
java.sql.SQLException: 无效的列索引
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:146)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:208)
at oracle.jdbc.driver.OraclePreparedStatement.setStringInternal(OraclePreparedStatement.java:5329)
at oracle.jdbc.driver.OraclePreparedStatement.setString(OraclePreparedStatement.java:5321)
at org.apache.commons.dbcp.DelegatingPreparedStatement.setString(DelegatingPreparedStatement.java:135)
at org.apache.commons.dbcp.DelegatingPreparedStatement.setString(DelegatingPreparedStatement.java:135)
at cn.tedu.jdbc.day02.Demo06.main(Demo06.java:17)