[英]Overwrite existing file
我想覆盖2个文件。 这两个文件都存储有关我的内存数据库(HSQLDB)的信息:db.data和db.script
我的以下代码应执行以下操作:
public class DBReset {
public Path db_data = Paths.get("db_sep/db_backup/db.data");
public Path db_script = Paths.get("db_sep/db_backup/db.script");
public Path dest_data = Paths.get("db_sep/db.data");
public Path dest_script = Paths.get("db_sep/db.script");
public void discard() throws IOException {
Files.copy(this.db_data, this.dest_data, StandardCopyOption.REPLACE_EXISTING);
Files.copy(this.db_script, this.dest_script, StandardCopyOption.REPLACE_EXISTING);
}
}
但是,如果我使用
public Class anotherClass {
new DBReset.discard();
// do something with DB
new DBReset.discard();
// do something other with DB
}
第二个discard()
不会覆盖我的文件。
我使用discard()
将数据库重置为其原始状态。 请不要问/告诉我还有其他方法可以重置数据库,实际的问题是为什么它不会覆盖我的文件。
似乎您没有关闭数据库。 如果数据库是打开的,则.data
文件无法覆盖。 完成使用数据库后,执行以下SQL语句:
SHUTDOWN
这应该由访问数据库的程序执行:
new DBReset.discard();
// do something with DB -- then perform SHUTDOWN in the same java process
遗憾的是SHUTDOWN
不起作用。
public void discard() throws IOException, SQLException {
Connection c = DBConnectFactory.getDataSource.getConnection();
PreparedStatement ps = c.preparedStatement("SHUTDOWN");
ps.executeUpdate();
ps.close();
c.close();
Files.copy(this.db_data, this.dest_data, StandardCopyOption.REPLACE_EXISTING);
Files.copy(this.db_script, this.dest_script, StandardCopyOption.REPLACE_EXISTING);
}
抛出Connection c = DBConnectFactory.getDataSource.getConnection();
第一行Connection c = DBConnectFactory.getDataSource.getConnection();
java.sql.Exception: error in script file line: 1 unknown token: ...
许多未知源。
在我的runQuery(String query)
也进行了测试-打开一个连接,然后通过PreparedStatement执行给定查询-强制SHUTDOWN
,但是它引发与上述相同的错误,我应该在getConnection()
处获得一个Connection。
我想做的是:
SELECT
, INSERT
进行一些处理,然后进行一些声明。 基本上对数据库进行一些测试。 PS:我在文件模式下使用HSQLDB。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.