/ * Ответ на вопрос * /
Привет! Я использую Eclipse 3.6.1 (Helios) и работаю с базой данных SQLite через интерфейс JDBC. Проблема в том, что я получаю разные результаты в режимах Debug и Run. Вот тестовый пример:
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; 3 реализации JDBC-SQLite: ch-werner SQLite Java Wrapper / JDBC Driver (r2011-01-06), Zentus SQLiteJDBC (0.5.6) и Xerial SQLite JDBC Драйвер (расширенный Zentus, пробовал 3.6.20 и 3.7.2) для разных тестовых баз данных SQLite.
Если я запускаю это в конфигурации «Выполнить», она работает нормально (печатает true
и нужный объект), но когда я пытаюсь выполнить пошаговую отладку (с использованием точки останова, а затем пошагового перехода), она всегда печатает false и getObject
терпит неудачу по разным причинам (java.lang.ArrayIndexOutOfBoundsException: 2 >= 1
под ch-werner impl и java.lang.IllegalStateException: SQLite JDBC: inconsistent internal state
под двумя другими). Аргументы JVM не заданы, просто код с нуля. Мне не удалось переформулировать эту ошибку в NetBeans 6.9.
Я что-то делаю не так или как?