Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 运行脚本以使用HSQLDB创建表_Java_Sql_Hsqldb - Fatal编程技术网

Java 运行脚本以使用HSQLDB创建表

Java 运行脚本以使用HSQLDB创建表,java,sql,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.executeUpda

我使用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>
我已经在HSQLDB文档中看到了我可以要求他这样做的内容。但是,它不符合我的要求,因为我希望在运行时运行脚本

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


有什么想法吗?

我也有同样的问题。我最终将文本文件拆分为;并分别执行每个语句。这还可以,因为我们没有插入,所以语句中没有分号。我当时还没有找到一种简单的方法来运行SQL脚本

因为您已经在使用spring,您可能希望使用执行SQL脚本的方法,其中语句用分号分隔。
这个类位于spring测试模块(JAR)中。

首先,我不知道它的含义。我很久以前就用过它了,它对我有用。 SQLExec类来自ant.jar,您可以查看ant源代码来创建自己的实用程序类

SQLExec sqlExec=new SQLExec();
sqlExec.setUserid("user");
sqlExec.setPassword("passowrd");
sqlExec.setUrl("jdbc:mysql://localhost:3306/dbname");
sqlExec.setDriver("com.mysql.jdbc.Driver");
sqlExec.setProject(new Project());
sqlExec.setSrc(new File("c:/test.sql"));
sqlExec.execute();

您可以尝试一下
org.hsqldb.util.SqlFile
。这个类似乎非常适合您的问题。

在我的例子中,拆分脚本很容易,因为脚本并不复杂,也没有特定的字符。不过,如果有更好的解决方案,我真的更喜欢它…这是可行的,谢谢!但是,我不明白为什么Spring拒绝将语句分成几行(即使最后有一个
)。您使用哪种executeSqlScript方法?在实现上有一点不同,SQLTool和SqlFile不在Fedora hsqldb-2.4.0包中,并且似乎不在源代码中。它似乎是一个独立的产品,可能许可证与Fedora不兼容。从sql脚本文件简单地初始化hsqldb数据库,ant文件会是什么样子?我正在构建使用maven的openas2,但我可以将ant添加为构建要求,并在安装过程中运行ant文件。我只使用了一个实际的ant构建文件,它可以完美地运行任意SQL来初始化数据库:
SQLExec sqlExec=new SQLExec();
sqlExec.setUserid("user");
sqlExec.setPassword("passowrd");
sqlExec.setUrl("jdbc:mysql://localhost:3306/dbname");
sqlExec.setDriver("com.mysql.jdbc.Driver");
sqlExec.setProject(new Project());
sqlExec.setSrc(new File("c:/test.sql"));
sqlExec.execute();