java.sql.SQLException: [Microsoft][ODBC 驱动程序管理器] 无效的游标状态
at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6958)
at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7115)
at sun.jdbc.odbc.JdbcOdbc.SQLGetDataInteger(JdbcOdbc.java:3812)
at sun.jdbc.odbc.JdbcOdbcResultSet.getDataInteger(JdbcOdbcResultSet.java:5639)
at sun.jdbc.odbc.JdbcOdbcResultSet.getInt(JdbcOdbcResultSet.java:582)
at sun.jdbc.odbc.JdbcOdbcResultSet.getInt(JdbcOdbcResultSet.java:600)
at com.info.InfoClass1.getTop12Info(InfoClass1.java:47)
at org.apache.jsp.infoList1_jsp._jspService(infoList1_jsp.java:163)程序:
 
public Collection getTop12Info()
{   
int classID=this.getClassID();
        Collection infosList=new ArrayList();
try {
ResultSet rst=myConn.executeSql("select top 12 id,title,explain,tel from info where isShow=true and isAudit=true and class1="+classID);
while(rst.next())
{
Info newInfo=new Info();
newInfo.setInfoID(rst.getInt("id"));
            newInfo.setTitle(rst.getString("title"));
newInfo.setExplain(rst.getString("explain"));
newInfo.setTel(rst.getString("tel"));
infosList.add(newInfo);
}
rst.close();
} catch (SQLException e) {
e.printStackTrace();

}
return infosList;
}

解决方案 »

  1.   

    应该是在连接数据库那部分程序写错了.看看你的connection
      

  2.   

    Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver"); 
    Connection conn=DriverManager.getConnection("jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=DBName","sa",""); 
    Statement stmt1=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
      

  3.   


    我的 connpublic class Conn {
       private Connection conn=null;
       private Statement  stm=null;
       private String user="";
       private String pwd="";
       private String strDriver="sun.jdbc.odbc.JdbcOdbcDriver";
       private String url="Jdbc:odbc:info";
       //构造
       public Conn(){
       try {
    Class.forName(strDriver);
    } catch (ClassNotFoundException e) {
    e.printStackTrace();
    }
    try {
    conn=DriverManager.getConnection(url,user,pwd);
    } catch (SQLException e) {
    e.printStackTrace();
    }
    try {
    stm=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
                                          ResultSet.CONCUR_UPDATABLE);
    } catch (SQLException e) {
    e.printStackTrace();
    }
       }
       /**
        * 
        * @return Connection
        * get Connection
        */
       public Connection getConn(){
       return conn;
       }  /**
       * 
       * @param sql
       * @return ResultSet
       */
       public ResultSet executeSql(String sql){
    ResultSet rs=null;
    try {
     rs = stm.executeQuery(sql);
    } catch (SQLException e) {
    e.printStackTrace();
    }
       return rs;
       }   /**
        *  conn close
        */
       public void closeConn(){
       try {
    stm.close();
    conn.close();

    } catch (SQLException e) {
    e.printStackTrace();
    }   
       }
     
    }