2013-02-23 37 views
0

我有一个奇怪的问题,大部分的东西,我似乎找到了在网络上指的是一个驱动程序或连接问题...奇怪值java.sql.SQLException错误

我解析扔了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。

Thx提前!

+2

如果您发布整个堆栈跟踪,可能有人可以解释错误。 – 2013-02-23 19:39:13

+0

这是一个奇怪的错误。它看起来像第一个字段有某种错误,但是,当dBase驱动程序试图创建SQL异常时,还有第二个问题,并且ODBC驱动程序管理器会引发异常。这表明至少第二个问题是dBase驱动程序中的错误。尝试从表中选择一个ID,看看它是否仍然发生。 – 2013-02-23 19:42:52

+0

我认为这是SQL Server写的? ,因为我没有看到这个MS Access。 – Azad 2013-02-23 19:58:56

回答

0

还有一个想法。如何从表中选择1,314条记录,但具有不同的范围(例如,行1,000 - > 2,313)?我想知道错误是否仍然存在。