/*問題回答*/不同的結果
嗨,我使用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