fre*_*edt 81
您可以通过删除架构来清除数据.默认架构称为PUBLIC.如果您执行下面的SQL声明,它将清除所有数据并删除所有表.
DROP SCHEMA PUBLIC CASCADE
或者,如果需要表和模式对象定义,则可以创建一个文件:包含对象但没有数据的数据库,并将下面的属性添加到.properties文件中.使用此类型的数据库进行测试,不会保留对数据的更改
files_read_only =真
HSQLDB 2.2.6及更高版本中提供的最新替代方案允许您在保留表的同时清除模式中的所有数据.在下面的示例中,将清除PUBLIC架构.
TRUNCATE SCHEMA public AND COMMIT
该语句在最新版本的HSQLDB中得到了增强.请参阅Truncate Statement下的http://hsqldb.org/doc/2.0/guide/dataaccess-chapt.html#dac_truncate_statement
use*_*188 19
根据弗雷特的建议,TRUNCATE SCHEMA PUBLIC RESTART IDENTITY AND COMMIT NO CHECK 为我工作.DAO的JUnit测试中相关的代码部分.
@After
public void tearDown() {
try {
clearDatabase();
} catch (Exception e) {
fail(e.getMessage());
}
}
public void clearDatabase() throws Exception {
DataSource ds = (DataSource) SpringApplicationContext.getBean("mydataSource");
Connection connection = null;
try {
connection = ds.getConnection();
try {
Statement stmt = connection.createStatement();
try {
stmt.execute("TRUNCATE SCHEMA PUBLIC RESTART IDENTITY AND COMMIT NO CHECK");
connection.commit();
} finally {
stmt.close();
}
} catch (SQLException e) {
connection.rollback();
throw new Exception(e);
}
} catch (SQLException e) {
throw new Exception(e);
} finally {
if (connection != null) {
connection.close();
}
}
}
Run Code Online (Sandbox Code Playgroud)
根据http://hsqldb.org/doc/2.0/guide/dataaccess-chapt.html#dac_truncate_statement上的文档
如果指定了RESTART IDENTITY,则架构中的所有表IDENTITY序列和所有SEQUENCE对象都将重置为其起始值
我们在所有测试中所做的是在执行结束时(在所有断言完成之后)回滚事务.我们使用Spring,并且默认情况下的测试不会在最后提交.这可确保您始终返回到数据库的起始状态(在初始创建实体表和运行import.sql之后).
即使您不使用Spring,也可以使用自己的try {} finally {}
块来回滚每个测试的已启动事务.
归档时间: |
|
查看次数: |
44184 次 |
最近记录: |