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

标签 java sql 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 上下文中定义的数据源:

<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/

相关文章:

java - Ant:将路径添加到 bash 脚本中的 java 类

sql - 根据同一个表中的 2 个不同值获取计数

具有内存数据库的 Java 应用程序构建时间太长

java - 无法启动 HSQLDB (java.net.BindException : Address already in use)

java - 仿射密码解密过程错误结果

java - 有库支持 Guava 表转 csv 格式吗?

php - 错误 SET SQL_BIG_SELECTS=1 或 SET MAX_JOIN_SIZE=#

mysql - SQL 多表连接一对多关系

java - JPA DBUnit HsqlDb : Disable constraint checks?

java - 插件太多会降低 Eclipse 的速度吗?