【问题标题】:Connect to Open Office odb file using jdbc program使用 jdbc 程序连接到 Open Office odb 文件
【发布时间】:2012-03-04 13:52:16
【问题描述】:

我编写了以下代码来连接到 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 驱动程序连接到 open office db?

【问题讨论】:

  • 你能确认数据库中有表名“Emp”吗?
  • 是的,已经创建了一个表,其中有一些数据
  • 在我的桌面上添加了两个或三个文件,名称分别为 Test.odb、Test.odb.properties,
  • 你可以试试这个...statement.executeQuery("select * from \"Emp\"") ..??
  • 否 在表名上使用引号不起作用

标签: java jdbc hsqldb openoffice-base


【解决方案1】:

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

    select * from Emp.APP 

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

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

table.* 

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

【讨论】:

    【解决方案2】:

    我终于找到了解决方案。但不幸的是,您必须将 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\""

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-12-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-09-07
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多