本人是菜鸟,刚刚学JAVA,求老手  修改指导!!!!
import java.sql.Connection;
import java.sql.Statement;
import java.sql.ResultSet;
import java.sql.DriverManager;
public class MyExample {
public static void main(String []args) throws Exception {
String url="jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=book.mdb";

try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection conn = DriverManager.getConnection(url); 

Statement stmt = conn.createStatement();
String command = "select * from book where bno='1'";

ResultSet rs = stmt.executeQuery(command);
String x1=rs.getString(1);String x2= rs.getString(2);String x3=rs.getString(3);
String x4= rs.getString(4);float x5=rs.getFloat(5);String x6=rs.getString(6);

while(rs.next()) {
System.out.print(" " + x1 + " ");
System.out.print(" " + x2 + " ");
System.out.print(" " + x3 + " ");
System.out.print(" " + x4 + " ");
System.out.print(" " + x5 + " ");
System.out.print(" " + x6 + " ");conn.close();
}
}
catch(Exception e) {
e.printStackTrace();
}

}
}异常:
java.sql.SQLException: [Microsoft][ODBC 驱动程序管理器] 无效的游标状态
at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6957)
at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7114)
at sun.jdbc.odbc.JdbcOdbc.SQLGetDataString(JdbcOdbc.java:3907)
at sun.jdbc.odbc.JdbcOdbcResultSet.getDataString(JdbcOdbcResultSet.java:5698)
at sun.jdbc.odbc.JdbcOdbcResultSet.getString(JdbcOdbcResultSet.java:354)
at MyExample.main(MyExample.java:18)

解决方案 »

  1.   

    String x1=rs.getString(1);String x2= rs.getString(2);String x3=rs.getString(3);
    String x4= rs.getString(4);float x5=rs.getFloat(5);String x6=rs.getString(6);while(rs.next()) {
    System.out.print(" " + x1 + " ");
    System.out.print(" " + x2 + " ");
    System.out.print(" " + x3 + " ");
    System.out.print(" " + x4 + " ");
    System.out.print(" " + x5 + " ");
    System.out.print(" " + x6 + " ");conn.close();
    }
    }
    catch(Exception e) {
    e.printStackTrace();
    }改成while(rs.next())
    {
    String x1=rs.getString(1);
    String x2= rs.getString(2);
    String x3=rs.getString(3);
    String x4= rs.getString(4);
    float x5=rs.getFloat(5);
    String x6=rs.getString(6);
    System.out.print(" " + x1 + " ");
    System.out.print(" " + x2 + " ");
    System.out.print(" " + x3 + " ");
    System.out.print(" " + x4 + " ");
    System.out.print(" " + x5 + " ");
    System.out.print(" " + x6 + " ");}
    }
    catch(Exception e) {
    e.printStackTrace();
    }
    finally{
    try{
    if(rs!=null){
    rs.close();}
    if(con!=null){
    con.close();}}
    catch(Exception e){}
    }
      

  2.   

    conn.close();
    这句话不能放在while循环里面。
    可以放在整个while块后面。