我编写了以下代码来连接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驱动程序连接到开放式办公室数据库?
答案 0 :(得分:4)
最后我找到了解决方案。但不幸的是你必须将db从odb更改为hsql。
1.将您的odb文件重命名为yourdatabasename.zip
2.extract it
3.现在可以在数据库文件夹下的数据库目录中找到备份,数据,脚本,属性文件。
4.将这些文件重命名为yourdatabasename.data,yourdatabasename.backup,yourdatabasename.script,yourdatabasename.properties
5.现在你的连接应该是这样的: “JDBC:HSQLDB:文件:Addresstoyourdatabase /数据库/ yourdatabasename”
6.不要忘记在你的桌子旁边写上: “SELECT * FROM \”Emp \“”
答案 1 :(得分:2)
我开发了一个简单的(只读)JDBC驱动程序,该驱动程序基本上提取了.odb文件并将所有调用重定向到HSQLDB驱动程序。也许对某些人也有用。
答案 2 :(得分:0)
我在本地访问的derby数据库遇到了类似的问题。就我而言,这是我的SQL语句中缺少的模式。所以我需要这样的东西:
select * from Emp.APP
使select语句不会生成您看到的错误。
我查看了这个网站http://hsqldb.org/doc/1.8/guide/ch09.html#select-section并注意到它有
table.*
作为示例select语句的一部分。所以我猜测用数据库名称或模式替换*可能会解决您的问题(或者只是尝试使用。*)。