2013-03-09 4 views
2

Я извлек iOS 6 sms db из резервной копии iTunes моего iPhone. Это sqlite3 db.xerial sqlite-jdbc 3.7.2 возвращает [SQLITE_NOTADB] на OSX Mountain Lion

Когда я запрашиваю его в терминале, он отлично работает:

$ sqlite3 sms.db 
sqlite> select * from message; 

Но когда я пытаюсь запросить его xerial sqlite-jdbc я получаю [SQLITE_NOTADB].

Это код, я использую:

public class Sample { 
    public static void main(String[] args) throws ClassNotFoundException { 
     String dbFilePath = args[0]; 
     File dbFile = new File(dbFilePath); 
     if (!dbFile.exists()) { 
      throw new IllegalArgumentException(String.format("%s does not exist", dbFilePath)); 
     } 

     // load the sqlite-JDBC driver using the current class loader 
     Class.forName("org.sqlite.JDBC"); 

     Connection connection = null; 
     try { 
      // create a database connection 
      connection = DriverManager.getConnection(String.format("jdbc:sqlite:%s", dbFilePath)); 
      Statement statement = connection.createStatement(); 
      statement.setQueryTimeout(30); // set timeout to 30 sec. 

      ResultSet rs = statement.executeQuery("select * from message"); 
      while (rs.next()) { 
       // read the result set 
       System.out.println(rs.getString("text")); 
      } 
     } catch (SQLException e) { 
      // if the error message is "out of memory", 
      // it probably means no database file is found 
      System.err.println(e.getMessage()); 
     } finally { 
      try { 
       if (connection != null) 
        connection.close(); 
      } catch (SQLException e) { 
       // connection close failed. 
       System.err.println(e); 
      } 
     } 
    } 
} 

Я использую xerial SQLite-3.7.2 на JDBC OSX Mountain Lion.

ответ

3

Версия 3.7.2 xerial sqlite-jdbc, последняя находка в Центральном репозитории Maven, похоже, не совместима с OSX Mountain Lion. Мне пришлось использовать версию 3.7.15-SNAPSHOT, которую я нашел here.

Если ваш используете Maven, вы можете использовать следующий файл ш:

#!/bin/sh 
wget https://bitbucket.org/xerial/sqlite-jdbc/downloads/sqlite-jdbc-3.7.15-SNAPSHOT.jar 
mvn install:install-file -Dfile=sqlite-jdbc-3.7.15-SNAPSHOT.jar -DgroupId=org.xerial -DartifactId=sqlite-jdbc -Dversion=3.7.15-SNAPSHOT -Dpackaging=jar 
rm -f sqlite-jdbc-3.7.15-SNAPSHOT.jar 

Я также попытался xerial SQLite-3.7.2 на JDBC Ubuntu 12.04 LTS, и он работает нормально.

+0

Благодарим вас за советы по установке локального хранилища maven. Я возился с pom.xml и не мог заставить его работать. – Salil

0

У меня такая же проблема на OSX Maverick. Переключение на 3.7.15-M1, которое также доступно в Центральном репозитории Maven, решило проблему.

Смежные вопросы