4

我编写了以下代码来连接到 OpenOffice db 。

String db = "C:\\Documents and Settings\\hkonakanchi\\Desktop\\Test.odb";
Class.forName("org.hsqldb.jdbcDriver");
Connection con =  DriverManager.getConnection("jdbc:hsqldb:file:" + db,"sa","");
Statement statement = con.createStatement();
ResultSet rs = statement.executeQuery("SELECT * FROM Emp");
while (rs.next()) {
System.out.print("ID: " + rs.getString("ID"));
System.out.print(" first name: " + rs.getString("firstname"));
System.out.println(" last name: " + rs.getString("lastname"));
}
con.close();

数据库包含emp表并保存了一些数据。

但我收到如下错误消息。

Exception in thread "main" java.sql.SQLException: 
Table not found in statement [SELECT * FROM Emp]
        at org.hsqldb.jdbc.Util.sqlException(Unknown Source)
        at org.hsqldb.jdbc.jdbcStatement.fetchResult(Unknown Source)
        at org.hsqldb.jdbc.jdbcStatement.executeQuery(Unknown Source)
        at Test.main(Test.java:16)

我怎么能解决这个问题。谁能告诉我如何使用 hsqldb 驱动程序连接到开放式办公室数据库?

4

3 回答 3

5

最后我找到了解决方案。但不幸的是,您必须将 db 从 odb 更改为 hsql。

1.将您的 odb 文件重命名为 yourdatabasename.zip

2.解压

3.现在您可以在数据库文件夹下的数据库目录中找到备份、数据、脚本、属性文件。

4.将这些文件重命名为 yourdatabasename.data,yourdatabasename.backup,yourdatabasename.script,yourdatabasename.properties

5.现在你的连接应该是这样的:“jdbc:hsqldb:file:Addresstoyourdatabase/database/yourdatabasename”

6.不要忘记在您的表名周围加上“,例如:“SELECT * FROM \"Emp\""

于 2013-02-02T18:04:09.500 回答
2

我开发了一个简单的(只读)JDBC 驱动程序,它基本上提取 .odb 文件并将所有调用重定向到 HSQLDB 驱动程序。也许它对某人也有用。

于 2019-01-26T17:00:12.097 回答
0

我在本地访问的 derby 数据库也有类似的问题。就我而言,这是我的 SQL 语句中缺少的架构。所以我需要类似的东西:

    select * from Emp.APP 

让 select 语句不会产生您看到的错误。

我查看了这个网站http://hsqldb.org/doc/1.8/guide/ch09.html#select-section并注意到它有

table.* 

作为示例选择语句的一部分。所以我猜用数据库名称或架构替换 * 可能会解决您的问题(或者只是尝试使用 .*)。

于 2012-07-03T16:14:30.183 回答