在下面的代码中,我期望按照https://www.sqlite.org/inmemorydb.html
所述,在连接关闭时删除内存数据库。public static void main(String[] args) throws SQLException {
var connection = DriverManager.getConnection("jdbc:sqlite::memory");
var statement = connection.createStatement();
statement.execute("CREATE TABLE IF NOT EXISTS tab (name);");
statement.execute("INSERT INTO tab (name) VALUES ('foo');");
var result = statement.executeQuery("SELECT * from tab;");
while (result.next()) {
System.out.println(result.getString("name"));
}
connection.close();
}
实际上,我看到的是,每次运行此代码时,表中都会有一行额外的行,这表明数据库在两次调用之间是持久的。为什么会这样?
答案 0 :(得分:0)
原来这是一个简单的错误。连接字符串应为:
var connection = DriverManager.getConnection("jdbc:sqlite::memory:");
缺少最后一个:
意味着它正在将其解释为一个名为“内存”的数据库。