0

結果セット内でカーソルを移動する必要がある ODBC データベース クエリを含む Java プロジェクトがあります。ResultSetの型をと宣言しましたが、スクリプトを実行すると、型が でTYPE_SCROLL_SENSITIVEあるという例外が発生します。以下に (簡略化した) プロジェクト コードを貼り付けました。ResultSetTYPE_FORWARD_ONLY

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");    


  }
}

私が受け取るエラーは次のとおりです。

"Exception in thread "main" java.sql.SQLException: Result set type is TYPE_FORWARD_ONLY at sun.jdbc.odbc.JdbcOdbcResultSet.last(JdbcOdbcResultSet.java:2290) at test.main(test.java:26)

26 行目で、結果セット カーソルを移動しようとしています。

繰り返しますが、助けていただければ幸いです。

4

3 に答える 3

0

上記のコメントを考慮して、次の2つの方法のいずれかをお勧めします。

  • SQL (簡単な方法): 選択クエリを変更しdesc、Java コードで最初のレコードを取得します。

    また

  • Java (長い道のり):

    1. クエリを起動して、テーブル内の結果の数を取得し、Java 変数のカウント値を取得するか、または から行数を取得できますResultSetMetaData
    2. 次に、行数を取得したので、行ごとにトラバースし、ResultSetカウント位置 (目的の行) で行を取得します。
于 2013-09-11T07:31:04.927 に答える
0

変化する:

ResultSet.TYPE_SCROLL_SENSITIVE

に:

ResultSet.TYPE_SCROLL_INSENSITIVE
于 2013-09-10T22:45:47.040 に答える
0

結果タイプがドライバからダウングレードされているかどうかを確認する必要があります: JDBC-ODBC ブリッジ ドライバによって一部の設定が変更されているかどうかを確認するにResultSet.getWarnings()は、すべてを繰り返します。SQLWarning

于 2013-09-11T05:14:49.450 に答える