|
有时候我们只想知道其中两组数据,所以我只查了其中两列,结果显示的是越界,求教各位该怎么办?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接口),导致运行的时候出现了问题。同样的代码另建一个工程完全正确,不管怎样都谢谢各位耐心的解答!么么哒
|

