我使用 hsqldb 运行需要数据库访问的单元测试。
目前,当我想为特定测试创建一个表时,我有以下代码:
private void createTable() {
PreparedStatement ps;
try {
ps = getConnection().prepareStatement("CREATE TABLE T_DATE (ID NUMERIC PRIMARY KEY, DATEID TIMESTAMP)");
ps.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
}
getConnection()
方法检索在 Spring
上下文中定义的数据源:
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="org.hsqldb.jdbcDriver"/>
<property name="url" value="jdbc:hsqldb:mem:memoryDB"/>
<property name="username" value="SA"/>
<property name="password" value=""/>
</bean>
现在,我想从一个 SQL 脚本创建我的表(当然,这个脚本将包含不止一个表创建):
CREATE TABLE T_DATE_FOO (ID NUMERIC PRIMARY KEY, DATEID TIMESTAMP);
CREATE TABLE T_DATE_BAR (ID NUMERIC PRIMARY KEY, DATEID TIMESTAMP);
...
我在 HSQLDB 文档中看到我可以要求他 run a script at the startup .但是,它不符合我的要求,因为我想在运行时运行脚本。
当然,我可以自己读取文件,对于每条 SQL 语句,我都运行一个 ps.executeUpdate()
命令,但我不想使用这种解决方案(除了如果没有其他解决方案)。
有什么想法吗?
最佳答案
您可以试试 org.hsqldb.util.SqlFile
。该类(class)似乎非常适合您的问题。
关于java - 运行脚本以使用 HSQLDB 创建表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2295457/