读书人

ResultSet 获取表中指定列的值有关问题

发布时间: 2012-01-26 19:40:46 作者: rapoo

ResultSet 获取表中指定列的值问题 困惑啊 请指点
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 ");

请教高手出错在上面地方?

[解决办法]
没有回收rs
[解决办法]
customer=rs.getString( "CUSTNO ");应该为
while(rs.next){
customer=rs.getString( "CUSTNO ");
}
[解决办法]
customer=rs.getString( "CUSTNO ");

你没有调用到next()。

你应该这样判断一下:

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

[解决办法]
select custno from custno where cust_flag = '0 ' and rownum <=10 ";
你的表名和列名是一样的啊????
应该是你的sql语句没有取到数据,符合条件的记录为0?
[解决办法]
getString()函数是:以 Java 编程语言中 String 的形式检索此 ResultSet 对象的当前行中指定列的值。
ResultSet在最初指向第一行之前。要调用next()函数
[解决办法]
while(rs.next){
customer=rs.getString( "CUSTNO ");
}

读书人网 >J2SE开发

热点推荐