package myproject;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
public class Main {


public static void main(String[] args) {
 java.sql.Statement stm=null;  
  String SQLStatement = "";
  ResultSet rs=null;
  String customer="";
try {
      // Load the driver class
      Class.forName("oracle.jdbc.driver.OracleDriver");       // Define the data source for the driver
      String sourceURL = "jdbc:oracle:thin:@"+ConfigRead.getDB_ip()+":"+ConfigRead.getDB_port()+":"+ConfigRead.getDB_name();       // Create a connection through the DriverManager 
      Connection databaseConnection = DriverManager.getConnection(sourceURL,ConfigRead.getDB_user(),ConfigRead.getDB_psw());
       System.out.println("Connection is: "+databaseConnection);
       
       stm=databaseConnection.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);
       
    } catch(ClassNotFoundException cnfe)
    {
      System.err.println(cnfe);
    }
    catch(SQLException sqle)
    {
      System.err.println(sqle);
    }
    
    //查询客户信息表CUSTNO 获取一条客户信息记录
    SQLStatement="select custno from custno where cust_flag ='0' and rownum<=10";         
    try{ 
     rs=stm.executeQuery(SQLStatement);
    
     System.out.println("no problem");      customer=rs.getString("CUSTNO");      System.out.println(customer);

        catch (SQLException e)
{
e.printStackTrace();
}
        
       
} }运行结果 :
Connection is: oracle.jdbc.driver.OracleConnection@197d257
no problem
java.sql.SQLException: 用尽的Resultset
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:179)
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:269)
at oracle.jdbc.driver.ScrollableResultSet.getOracleObject(ScrollableResultSet.java:655)
at oracle.jdbc.driver.ScrollableResultSet.getString(ScrollableResultSet.java:680)
at oracle.jdbc.driver.UpdatableResultSet.getString(UpdatableResultSet.java:359)
at oracle.jdbc.driver.OracleResultSet.getString(OracleResultSet.java:1482)
at myproject.Main.main(Main.java:41)
程序连接没有问题  System.out.println("Connection is: "+databaseConnection);到这也执行了 
执行  到 rs=stm.executeQuery(SQLStatement);
    
     System.out.println("no problem");
也没问题 
  当我取列名为CUSTNO  的字符型字段的值时候报以上错误  customer=rs.getString("CUSTNO");请教高手出错在上面地方?

解决方案 »

  1.   

    customer=rs.getString("CUSTNO");应该为
    while(rs.next){
    customer=rs.getString("CUSTNO");
    }
      

  2.   

    或者为
    if(rs.next){
    customer=rs.getString("CUSTNO");
    }
      

  3.   

    customer=rs.getString("CUSTNO");你没有调用到next()。你应该这样判断一下:if(rs.next())
    {
     customer=rs.getString("CUSTNO");
    }
      

  4.   

    select custno from custno where cust_flag ='0' and rownum<=10";         
    你的表名和列名是一样的啊????
    应该是你的sql语句没有取到数据,符合条件的记录为0?
      

  5.   

    关于ResultSet的方法next()的API说明
    ==========================================
    next
    boolean next()
                 throws SQLException将指针从当前位置下移一行。ResultSet 指针最初位于第一行之前;第一次调用 next 方法使第一行成为当前行;第二次调用使第二行成为当前行,依此类推。 
    如果开启了对当前行的输入流,则调用 next 方法将隐式关闭它。读取新行时,将清除 ResultSet 对象的警告链。 
    返回:
    如果新的当前行有效,则返回 true;如果不存在下一行,则返回 false 
      

  6.   

    getString()函数是:以 Java 编程语言中 String 的形式检索此 ResultSet 对象的当前行中指定列的值。
    ResultSet在最初指向第一行之前。要调用next()函数
      

  7.   

    while(rs.next){
    customer=rs.getString("CUSTNO");
    }