/*问题回答*/不同的结果
嗨,我使用Eclipse 3.6.1(太阳神),我通过JDBC接口SQLite数据库工作。问题是我在调试和运行模式下得到了不同的结果。这里是测试用例:
public static void main(String[] args){
String db_name = /* path to some SQLite database */;
try {
// If we using ch-werner SQLite Java Wrapper/JDBC Driver
Class.forName("SQLite.JDBCDriver");
// If we using Xerial or Zentus impl.
Class.forName("org.sqlite.JDBC");
Connection con = DriverManager.getConnection("jdbc:sqlite:" + db_name);
Statement statement = con.createStatement();
ResultSet rs;
try {
rs = statement.executeQuery("SELECT * FROM sites;");
boolean flag = rs.isBeforeFirst(); // Breakpoint here
System.out.println(flag);
if (flag) rs.next();
System.out.println(rs.getObject(1));
} finally {
statement.close();
con.close();
}
} catch(Exception ex) {
ex.printStackTrace();
}
}
我试过JDK 1.6.0,1.6.0_23,JRE 1.6.0;对于不同的SQLite测试数据库,JDBC-SQLite的3个实现:ch-werner SQLite Java Wrapper/JDBC Driver(r2011-01-06),Zentus SQLiteJDBC(0.5.6)和Xerial SQLite JDBC Driver(这是扩展的Zentus,尝试3.6.20和3.7.2)。
如果我运行此之下运行配置,它工作正常(打印true
和所需的对象),但是当我尝试一步一步的调试(使用断点,然后步过的),它总是打印错误和getObject
失败出于不同的原因(在ch-werner impl下的java.lang.ArrayIndexOutOfBoundsException: 2 >= 1
和在另外两个下的java.lang.IllegalStateException: SQLite JDBC: inconsistent internal state
)。没有设置JVM参数,只是从头开始编写代码。我无法在NetBeans 6.9下重新修复此错误。
我做错了什么或者是什么?
你的猜测是完全正确的,我很抱歉成为这样一个愚蠢的:)我会尽快接受你的答案,因为我会被允许的。 – 2011-01-21 07:46:37