2015-02-15 10 views
1

Мой проект java соединяет базу данных с SQLite. (Sqlite-jdbc-3.7.2) Нет проблем с подключением. Когда программа не находит базу данных, сразу создается новая. Но я не хочу этого, я хочу, чтобы он подключился к существующей базе данных, поэтому он не должен создавать новый. Как мне это сделать?Java-программа всегда создает новую базу данных

Мой Java-код:

public class JdbcSQLiteConnection { 

    public static void main(String[] args) { 
     try { 
      Class.forName("org.sqlite.JDBC"); 
      String dbURL = "jdbc:sqlite:product.db"; 
      Connection conn = DriverManager.getConnection(dbURL); 
      if (conn != null) 
      { 
       System.out.println("Connected to the database"); 
       DatabaseMetaData dm = (DatabaseMetaData) conn.getMetaData(); 
       System.out.println("Driver name: " + dm.getDriverName()); 
       System.out.println("Driver version: " + dm.getDriverVersion()); 
       System.out.println("Product name: " + dm.getDatabaseProductName()); 
       System.out.println("Product version: " +          dm.getDatabaseProductVersion()); 
       conn.close(); 
      } 
     } catch (ClassNotFoundException ex) { 
      ex.printStackTrace(); 
     } catch (SQLException ex) { 
      ex.printStackTrace(); 
     } 
    } 
} 
+2

избавиться от 'if (conn! = Null)', он никогда не будет равен нулю. –

ответ

0

Согласно SQLiteConfig source, вы можете настроить open_mode делать то, что вы хотите:

String dbURL = "jdbc:sqlite:product.db"; 
SQLiteConfig config = new SQLiteConfig(); 
config.resetOpenMode(SQLiteOpenMode.CREATE); // this disable creation 
Connection conn = DriverManager.getConnection(dbURL, config.toProperties()); 
// ... 

При этом, если БД существует, код работает, если DB не существует, вы получаете исключение (с довольно странным сообщением):

java.sql.SQLException : [SQLITE_CANTOPEN] Не удалось открыть файл базы данных (из памяти)

+0

спасибо, что это работает. :) –

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