每当我运行此代码时,此错误就会如下所示。。。!
Exception in thread "main" java.sql.SQLException: Before start of result set
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1073)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:987)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:982)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:927)
at com.mysql.jdbc.ResultSetImpl.checkRowPos(ResultSetImpl.java:841)
at com.mysql.jdbc.ResultSetImpl.getStringInternal(ResultSetImpl.java:5650)
at com.mysql.jdbc.ResultSetImpl.getString(ResultSetImpl.java:5570)
at com.mysql.jdbc.ResultSetImpl.getDoubleInternal(ResultSetImpl.java:2463)
at com.mysql.jdbc.ResultSetImpl.getDouble(ResultSetImpl.java:2424)
at com.mysql.jdbc.ResultSetImpl.getDouble(ResultSetImpl.java:2442)
at Library.main(Library.java:157)
以下是我运行并捕获此错误的主要代码。。。
System.out.println("Registration number of member returning book: ");
String number = input.nextLine();
System.out.println("Book shelf number");
double bookNumber = input.nextDouble();
double shelfNo;
String borrower;
long timeBookTaken;
long timeToReturnBook;
if(borrow.hasBeenBorrowed(bookNumber))
{
String sql = "SELECT * FROM borrowed WHERE shelfNumber = '"+ bookNumber +"'";
ResultSet rs = con.readDatabase(sql,statement);
//Statement statmnt = con.getStatement();
shelfNo = rs.getDouble("shelfNumber");
borrower = rs.getString("borrowerRegNum");
timeBookTaken = rs.getLong("timetaken");
timeToReturnBook = rs.getLong("time_to_return");
System.out.println(shelfNo+"\t"+borrower+"\t"+timeBookTaken+"\t"+timeToReturnBook);
con(是DBConnection类的实例)。。。readDatabase方法在DBConnection类内部。
DBConnection class
===================
package database;
import java.sql.*;
public class DBConnection
{
private static Connection connection;
private static Statement statement;
private static ResultSet resultset;
private static String mysqlURL = "jdbc:mysql://localhost/library";
private static String mysqlUsername = "root";
private static String mysqlPassword = "";
public DBConnection()
{
try
{
Class.forName("com.mysql.jdbc.Driver");
connection
= DriverManager.getConnection(mysqlURL,mysqlUsername,mysqlPassword);
statement = connection.createStatement();
}
catch(Exception exception)
{
System.out.println("Error: "+ exception.getMessage());
}
}
public Connection getConnection()
{
return connection;
}
public Statement getStatement()
{
return statement;
}
public ResultSet readDatabase(String sql,Statement statement) throws SQLException
{
resultset = statement.executeQuery(sql);
return resultset;
}
}
您尚未调用next()
结果集。这不仅会告诉您结果集中是否还有另一行,而且还会将结果集游标前进到该行。
将您的“获取”调用附在结果集中
while (rs.next()) {
// get calls here
}
因此您可以处理所有行,并在每个循环中前进到每一行。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句