当前位置: 首页 > 面试题库 >

运行脚本以使用HSQLDB创建表

贲宜春
2023-03-14
问题内容

我使用 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文档中,我可以要求他在启动时运行脚本。但是,它不符合我的要求,因为我想在运行时运行脚本。

当然,我可以自己读取文件,并且对于每个SQL语句,我都运行一个ps.executeUpdate()命令,但是我不想使用这种解决方案(除非没有其他解决方案)。

任何想法?


问题答案:

因为您已经在使用spring,所以您可能想使用SimpleJdbcUtils.executeSQLScript方法,该方法执行一个SQL脚本,其中语句之间用分号分隔。此类在弹簧测试模块(JAR)中。



 类似资料:
  • 问题内容: 我正在尝试使用内存数据库来模拟Teradata数据库。在构建表之前,我需要创建一个架构,但是,这很适合我。 我正在使用Spring,并且与进行了大量数据库交互,但是,这在Hibernate创建所有表之后执行。我试图使用HSQLDB应该读取的文件,但是我认为当您使用内存数据库无法正常工作时。我将文件移动了一点,似乎什么也没打。 任何人都知道如何在启动时为内存中的HSQLDB数据库创建架构

  • 创建和使用脚本 游戏对象的行为由绑定的 组件 所控制。尽管 Unity 内置的组件非常灵活多样,但是你很快就会发现它们提供的功能远远不够,为了实现你所要的游戏功能,你需要超越它们才行。Unity 支持通过 脚本 创建属于你自己的组件。在组件中,随着时间的推移,你可以触发游戏事件、修改组件属性,还可以以任何你喜欢的方式来响应用户输入。 Unity 内置支持两种编程语言: C# 一种工业标准语言,类似

  • 出于学习目的,我正在尝试在GCP上安装和设置我自己的Kubernetes集群。 我想在GCP上为我的实例提供一个引导脚本。 这是我的config 我在应用terraform时遇到了这个问题 错误:无法打开脚本“sudo apt get update” sudo apt-get安装 apt-transverage-https ca-证书 curl gnupg-Agent software-Prope

  • Hyperf 提供了创建模型的命令,您可以很方便的根据数据表创建对应模型。命令通过 AST 生成模型,所以当您增加了某些方法后,也可以使用脚本方便的重置模型。 php bin/hyperf.php gen:model table_name 创建模型 可选参数如下: 参数 类型 默认值 备注 --pool string default 连接池,脚本会根据当前连接池配置创建 --path strin

  • 问题内容: 我已经准备好具有功能流程的Selenium自动化脚本,现在我想将这些脚本与JMeter集成以进行负载测试。 那可能吗? 如果是这样,如何将两者融合? 我的首要目标是使用硒运行自动化脚本,而不是在jmeter中运行这些脚本以进行负载或性能测试。 问题答案: JUnit请求采样器 如果您想重用已经自动化的(Java)Selenium场景,而不是为WebDriver Sampler重写JS脚

  • 问题内容: 我想尝试使用npm为Web应用程序运行各种构建任务。我知道我可以这样添加一个字段来做到这一点: 当您使用带有许多选项的更复杂的命令时,这变得很笨拙。是否有可能将这些命令移至bash脚本或类似的东西?就像是: 在文件中的哪里执行命令? 阅读这篇文章似乎是这样,但是我不清楚我应该在哪里放置文件或者丢失了什么。 问题答案: 完全有可能… 另外,请确保在bash文件的顶部放置一个哈希爆炸 还请