有时候我们只想知道其中两组数据,所以我只查了其中两列,结果显示的是越界,求教各位该怎么办?sql语句我在mysql客户端运行了,没问题。 import java.sql.*; public class Test1 { /** * @param args * @throws Exception *1.PreparedStatement替换Statement:排除SQL注入等的影响 */ public static void main(String[] args) throws Exception { // TODO Auto-generated method stub temlate(); } static void temlate() throws Exception{ //多一个参数 String url="jdbc:mysql://localhost:3306/book_shop";//book_shop未数据库名称 String user="root"; String password="425mys175";//自己修改 Connection conn=null; //Statement st=null;//替换 PreparedStatement ps=null; ResultSet rs=null; try{ //1.注册驱动 Class.forName("com.mysql.jdbc.Driver"); //2.建立连接 conn=DriverManager.getConnection(url,user,password); //3.创建执行SQL的语句 //3. st=conn.createStatement();//替换(原始方法) //String sql="select bookConcern,counts from books where name=""zhangsan"""; ps=conn.prepareStatement("select id,price from books"); // 4.执行语句 // rs=st.executeQuery("select * from books"); //替换 rs=ps.executeQuery();//PreparedStatement接口里的executeQuery()方法没有 //“sql”参数,因为sql已经被conn.prepareStatement(sql) //预处理了 // 5.处理执行结果 while(rs.next()){ /* System.out.println(rs.getObject(1)+"\t"+rs.getObject(2)+ "\t"+rs.getObject(3)+"\t"+rs.getObject(4)+ "\t"+rs.getObject(5)+"\t"+rs.getObject(6));*/ System.out.println(rs.getObject(1)+"\t"+rs.getObject(2)); } }finally{ //这个finally是防止连接未关闭,下面几个是防止rs出现异常 //导致下面的不能关闭(运行) try{ if(rs!=null) rs.close(); }finally{ try{ //if(st!=null)//替换:下同 //st.close(); if(ps!=null) ps.close(); }finally{ if(conn!=null) conn.close(); } } } } } |
|
错误提示:Exception in thread “main” java.sql.SQLException: Column Index out of range, 3 > 2.
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1055) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:926) at com.mysql.jdbc.ResultSetImpl.checkColumnBounds(ResultSetImpl.java:818) at com.mysql.jdbc.ResultSetImpl.getObject(ResultSetImpl.java:4787) at Test1.temlate(Test1.java:41) at Test1.main(Test1.java:11) |
|
10分 |
下标改成0和1试试
|
10分 |
恩恩 下标越界?
|
10分 |
1、 2 改成 0 、1
|
10分 |
越界? 参数设置问题把 sql 设置参数不同java 他的下标设置是从 1开始的 你也可以不用”?”这种占位符号的形式 可以使用 替换占位
select * from A where a.id= :id setParameter(“id”,value); |
问题解决了,是因为我在一个工程里建了几个包(几个main接口),导致运行的时候出现了问题。同样的代码另建一个工程完全正确,不管怎样都谢谢各位耐心的解答!么么哒
|