JDBC迭代错误(从第一次resultset获得空值开始)

JDBC迭代错误(从第一次resultset获得空值开始),jdbc,Jdbc,我正在与JDBCOracle合作完成学校作业。 我试图从表中获取一些元组,但是resultset.next每次都获得空值。从第一次开始 我使用eclipse进行了调试,连接preparedStatement和resultSet分别得到了T4CConnectionid=82、T4CPreparedStatementid=100和OracleResultSetImplid=111的值 Here is the code. package program; import java.sql.C

我正在与JDBCOracle合作完成学校作业。 我试图从表中获取一些元组,但是resultset.next每次都获得空值。从第一次开始 我使用eclipse进行了调试,连接preparedStatement和resultSet分别得到了T4CConnectionid=82、T4CPreparedStatementid=100和OracleResultSetImplid=111的值

Here is the code.

    package program;

import java.sql.Connection;
import java.sql.DriverManager;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Vector;

public class ProgramDao {
public static Connection getConn(){
    Connection conn = null;
    try{
        Class.forName("oracle.jdbc.OracleDriver");
        String url = "jdbc:oracle:thin:@dblab.sogang.ac.kr:1521:XE";
        String user = "DB20111084";
        String pwd = "DB20111084";
        conn = DriverManager.getConnection(url, user, pwd);
    }catch (Exception e1){
        e1.printStackTrace();
    }
    return conn;
}

public Vector<ProgramDto> allTable(){
    Connection conn = null;
    PreparedStatement pstmt = null;
    ResultSet rs = null;

    Vector<ProgramDto> v = new Vector<ProgramDto>();

    try{
        conn = getConn();
        String sql = "SELECT P.PROGRAMNAME, T.TRAINERNAME, P.P_TIME, P.P_CAPACITY FROM PROGRAM P, TRAINER T WHERE P.TID=T.TID";
        pstmt = conn.prepareStatement(sql);
        rs = pstmt.executeQuery();
        ProgramDto dto = null;

        **while(rs.next()){
            dto = new ProgramDto();
            dto.setProgramName(rs.getString(1));
            dto.setTrainerName(rs.getString(2));
            dto.setP_Time(rs.getString(3));
            dto.setP_Capacity(rs.getInt(4));
            v.addElement(dto);
        }
    } catch(Exception e1){
        e1.printStackTrace();**
    } finally {
        try{
            if(rs != null){
                rs.close();
            }
            if(pstmt != null){
                pstmt.close();
            }
            if(conn != null){
                conn.close();
            }
        }catch(Exception e2){
            e2.printStackTrace();
        }
    }
    return v;
}
...
为什么rs.next每次都为null,并跳转到catch子句。
请帮助我..

您说您的结果集使用OracleResultSetImpl实例进行初始化。那么你到底在哪里得到空值呢?您可以添加完整的堆栈跟踪吗?rs.next不能返回null。如果可以,您应该获得NullPointerException。请发布异常。当我调试这个程序时,它会正常移动到whilers.next。由双星指向,然后跳转到流行语。如何检查e1.printStackTrace;它不会打印出任何错误消息。@NoinLee如果您使用的是PreparedStatement,则它希望设置值。也许是例外导致了这一点。看一看,PreparedStatement的用法解释得很好。