如何使用HSQLDB为JDBC应用程序动态生成表

发布于 2024-11-24 01:53:32 字数 572 浏览 2 评论 0原文

我想使用 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

゛清羽墨安 2024-12-01 01:53:32

为什么要执行 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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文