为什么用JDBC不能查数据表中的单独两列

J2EE 码拜 9年前 (2015-04-02) 884次浏览 0个评论
 

有时候我们只想知道其中两组数据,所以我只查了其中两列,结果显示的是越界,求教各位该怎么办?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();
		}
		}
	}

}
}
为什么用JDBC不能查数据表中的单独两列
错误提示: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)
为什么用JDBC不能查数据表中的单独两列
10分
下标改成0和1试试
为什么用JDBC不能查数据表中的单独两列
10分
恩恩 下标越界?
为什么用JDBC不能查数据表中的单独两列
10分
 1、 2 改成  0 、1
为什么用JDBC不能查数据表中的单独两列
10分
越界? 参数设置问题把  sql 设置参数不同java 他的下标设置是从 1开始的 你也可以不用”?”这种占位符号的形式 可以使用 替换占位  
 select * from  A  where  a.id= :id

setParameter(“id”,value);

为什么用JDBC不能查数据表中的单独两列
问题解决了,是因为我在一个工程里建了几个包(几个main接口),导致运行的时候出现了问题。同样的代码另建一个工程完全正确,不管怎样都谢谢各位耐心的解答!么么哒

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明为什么用JDBC不能查数据表中的单独两列
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!