java – 运行脚本以使用HSQLDB创建表

我使用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上下文中定义的DataSource:

<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()命令,但我不想使用这种解决方案(除非没有其他解决方案).

任何的想法?

解决方法

因为您已经在使用spring,所以您可能希望使用执行SQL脚本的 SimpleJdbcUtils.executeSQLScript方法,其中语句以分号分隔. 这个类是在spring-test模块(JAR)中.

相关文章

摘要: 原创出处 https://www.bysocket.com 「公众号:泥瓦匠...
摘要: 原创出处 https://www.bysocket.com 「公众号:泥瓦匠...
今天犯了个错:“接口变动,伤筋动骨,除非你确定只有你一个...
Writer :BYSocket(泥沙砖瓦浆木匠)微 博:BYSocket豆 瓣:...
本文目录 线程与多线程 线程的运行与创建 线程的状态 1 线程...