java 程序总是创建一个新的数据库
The java program always creates a new database
我的 java 项目使用 SQLite 连接数据库。 (sqlite-jdbc-3.7.2) 连接没问题。当程序没有找到数据库时,立即创建一个新的。但我不希望它连接到现有数据库,因此它不应该创建新数据库。我该怎么做?
我的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();
}
}
}
根据SQLiteConfig source, you can tweak 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());
// ...
有了这个,如果数据库存在,代码就可以工作,如果数据库不存在,你会得到一个异常(有一个相当奇怪的消息):
java.sql.SQLException: [SQLITE_CANTOPEN] Unable to open the database file (out of memory)
我的 java 项目使用 SQLite 连接数据库。 (sqlite-jdbc-3.7.2) 连接没问题。当程序没有找到数据库时,立即创建一个新的。但我不希望它连接到现有数据库,因此它不应该创建新数据库。我该怎么做?
我的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();
}
}
}
根据SQLiteConfig source, you can tweak 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());
// ...
有了这个,如果数据库存在,代码就可以工作,如果数据库不存在,你会得到一个异常(有一个相当奇怪的消息):
java.sql.SQLException: [SQLITE_CANTOPEN] Unable to open the database file (out of memory)