Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JAVA ODBC滚动错误,尽管类型\u滚动\u敏感_Java_Sql_Jdbc_Odbc - Fatal编程技术网

JAVA ODBC滚动错误,尽管类型\u滚动\u敏感

JAVA ODBC滚动错误,尽管类型\u滚动\u敏感,java,sql,jdbc,odbc,Java,Sql,Jdbc,Odbc,我有一个涉及ODBC数据库查询的JAVA项目,需要在结果集中移动光标。我已经将ResultSet的类型声明为type\u SCROLL\u SENSITIVE,但是当我执行脚本时,我得到一个异常,说明ResultSet类型为type\u FORWARD\u。我已经在下面粘贴了我的(简化的)项目代码,如果有任何帮助,我将不胜感激 import java.util.InputMismatchException; //Necessary package for basic Java utilitie

我有一个涉及ODBC数据库查询的JAVA项目,需要在结果集中移动光标。我已经将
ResultSet
的类型声明为
type\u SCROLL\u SENSITIVE
,但是当我执行脚本时,我得到一个异常,说明
ResultSet
类型为
type\u FORWARD\u
。我已经在下面粘贴了我的(简化的)项目代码,如果有任何帮助,我将不胜感激

import java.util.InputMismatchException;  //Necessary package for basic Java utilities
import java.sql.*;                        //Necessary packages for SQL routines

public class test {

  public static void main(java.lang.String[] args) throws Exception {

    // declare variables & create database connection
    System.out.println("Open ODBC Connection....");
    Connection dataConnection = DriverManager.getConnection("jdbc:odbc:DSN");
    Statement  stmt           = dataConnection.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);      
    int        i              = 0;
    int        N              = 0;

    //loading JDBC-ODBC Bridge driver into memory
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

    // create SQL query string
    String sql = "SELECT ObjRef, IDX, DateListDateAsString FROM ARRAY_BAC_CAL_DateList WHERE DEV_ID=10000 AND INSTANCE=1";

    // run the query
    ResultSet rs = stmt.executeQuery(sql);

    // determine number of date entries
    rs.last();
    N = rs.getInt("IDX");

    // close connection
    rs.close();
    dataConnection.close();
    System.out.println ("Connection closed\n");    


  }
}
我收到的错误是:

线程“main”java.sql.SQLException中的“异常”:结果集类型为 键入_FORWARD_仅在 位于的sun.jdbc.odbc.JdbcOdbcResultSet.last(JdbcOdbcResultSet.java:2290) main(test.java:26)

第26行是我尝试移动结果集光标的地方

再次感谢您的帮助。

更改:

ResultSet.TYPE_SCROLL_SENSITIVE
致:


您必须使用
ResultSet.getWarnings()
检查结果类型是否已从驱动程序降级:迭代全部以检查JDBC-ODBC网桥驱动程序是否更改了某些设置。

考虑到您的上述评论,我建议您使用以下两种方法之一:

  • SQL(快捷方式):修改select查询并按
    desc
    对其排序,在java代码中获取第一条记录,就是这样

  • 爪哇(漫长的道路):

  • 激发查询以获取表中的结果数并获取java变量中的计数值,或者可以从
    ResultSetMetaData
    获取行数
  • 其次,由于现在已经有了行计数,所以逐行遍历
    ResultSet
    并在计数位置(您所需的行)获取行

是的,还有其他方法可以访问最后一个条目并计算条目总数,我正在尝试这样做,但在声明“resultSet.TYPE\u SCROLL\u SENSITIVE”后,我似乎应该能够显式移动resultSet光标。感谢您的输入。
ResultSet.TYPE_SCROLL_INSENSITIVE