0

私は奇妙な問題を抱えており、ウェブ上で見つけたように見えるもののほとんどは、ドライバーまたは接続の問題に言及しています...

私はいくつかのID番号を取得するためにdBASEテーブルをスローして解析しています:

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection cnxn = DriverManager.getConnection("jdbc:odbc:dBASE Files;DefaultDir=\"C:\"");
Statement stmt = cnxn.createStatement();
command = "SELECT * FROM table";
ResultSet result = stmt.executeQuery(command);
while (result.next()) {
    System.out.println(result.getInt(1));
}

コンソールに表示される結果は

1
2
3
4
...
1312
1313
1314
java.sql.SQLException: [Microsoft][ODBC Driver Manager] Invalid string or buffer length
at sun.jdbc.odbc.JdbcOdbc.createSQLException(Unknown Source)
at sun.jdbc.odbc.JdbcOdbc.standardError(Unknown Source)
at sun.jdbc.odbc.JdbcOdbc.SQLGetDataString(Unknown Source)
at sun.jdbc.odbc.JdbcOdbcResultSet.getDataString(Unknown Source)
at sun.jdbc.odbc.JdbcOdbcResultSet.getString(Unknown Source)
at sun.jdbc.odbc.JdbcOdbcResultSet.getString(Unknown Source)

エラーを生成した行は次のとおりです。

System.out.println(result.getInt(1));

私はそれから結果を得ているので、接続エラーやドライバーのエラーではないと思います。私はテーブルを見て、行1315に問題がないようです。削除しようとしましたが、何もありませんでした。ところで、使用されるテーブルには 2376 行あります。

長さが異なる別のテーブルを試してみましたが、417 行の後にエラーが発生します。

Windows 7、64ビットを使用している場合に役立つ場合に備えて、テーブルはdBASE IVです。

事前にt​​hx!

4

1 に答える 1

0

まだ別のアイデア。テーブルから 1,314 レコードを選択するのはどうでしょうか。ただし、範囲は異なります (たとえば、行 1,000 -> 2,313)。エラーがまだ発生するかどうか疑問に思っています。

于 2013-02-24T00:21:41.467 に答える