奇怪的java.sql.SQLException错误

奇怪的java.sql.SQLException错误,java,sql,dbase,Java,Sql,Dbase,我有一个奇怪的问题,我在网上找到的大多数东西都是指驱动程序或连接问题 我正在分析数据库表以获取一些id号: Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection cnxn = DriverManager.getConnection("jdbc:odbc:dBASE Files;DefaultDir=\"C:\""); Statement stmt = cnxn.createStatement(); command = "SELECT

我有一个奇怪的问题,我在网上找到的大多数东西都是指驱动程序或连接问题

我正在分析数据库表以获取一些id号:

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行之后也出现了错误

为了以防万一,我使用的是64位windows 7,表是dBASE IV


提前谢谢

还是另一个想法。如何从表中选择1314条记录,但范围不同(例如,行1000->2313)?我想知道错误是否仍然存在。

如果您发布整个堆栈跟踪,可能有人能够解释错误。这是一个奇怪的错误。首先,该字段似乎出现了某种错误,但是,当dBase驱动程序尝试创建SQL异常时,出现了第二个问题,ODBC驱动程序管理器抛出了一个异常。这表明至少第二个问题是数据库驱动程序中的错误。试着从表中选择一个id,看看它是否仍然发生。我想这是SQL Server写的?因为我在MS Access上没有看到这个。它是dBase。。。正如他所说的,正如连接字符串清楚地显示的那样。他正在使用ODBC驱动程序访问它。另外,请尝试id>1314的位置。如果您查询一个字段,而它在第二条记录上出错,这是一个更为狭窄的问题,了解这一点可能会有所帮助。或者,它可能在以后的记录之前不会发生,知道这一点会很有用。