如何使用HSQLDB为JDBC应用程序动态生成表
我想使用 HyperSQL 作为内存数据库来进行 Java - JDBC 应用程序的集成测试。
如果我尝试以下操作:
Properties props = new Properties();
props.put("user", "sa");
props.put("password", "");
Class.forName("org.hsqldb.jdbcDriver");
Connection cn = DriverManager.getConnection("jdbc:hsqldb:mem://localhost", props);
Statement st = cn.createStatement();
st.executeUpdate("Insert into foo (bar) values (10);");
我得到:
java.sql.SQLException: Table not found: foo in statement [Insert into bar]
我认为 HSQL 有一种方法可以在用作内存数据库时动态生成表,但我似乎在文档中找不到它。
I want to use HyperSQL as an in-memory database for integration tests of a Java - JDBC application.
If I try the following:
Properties props = new Properties();
props.put("user", "sa");
props.put("password", "");
Class.forName("org.hsqldb.jdbcDriver");
Connection cn = DriverManager.getConnection("jdbc:hsqldb:mem://localhost", props);
Statement st = cn.createStatement();
st.executeUpdate("Insert into foo (bar) values (10);");
I get:
java.sql.SQLException: Table not found: foo in statement [Insert into bar]
I thought there was a way for HSQL to dynamically generate the tables when used as an in-memory database, but I can't seem to find it in the documentation.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
为什么要执行 INSERT 查询?这不会返回
ResultSet
。你应该
executeUpdate()
HSQL 中没有什么“自动”的。您可能会想到 Hibernate 及其 hbm2ddl。
Why are you executing a query for an INSERT? That won't return a
ResultSet
.You ought to
executeUpdate()
There's nothing "automatic" in HSQL. You might be thinking of Hibernate and its hbm2ddl.