Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用jdbc程序连接打开Office odb文件_Java_Jdbc_Hsqldb_Openoffice Base - Fatal编程技术网

Java 使用jdbc程序连接打开Office odb文件

Java 使用jdbc程序连接打开Office odb文件,java,jdbc,hsqldb,openoffice-base,Java,Jdbc,Hsqldb,Openoffice Base,我编写了以下代码来连接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.crea

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

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

    select * from Emp.APP 
以使select语句不生成您看到的错误

我看了一下这个网站,发现它

table.* 

作为示例select语句的一部分。所以我猜用数据库名或模式替换*可能会解决您的问题(或者用。*试试)

我终于找到了解决办法。但不幸的是,您必须将数据库从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.别忘了在你的桌名周围写上“如: 我开发了一个简单的(只读)JDBC驱动程序,它基本上提取.odb文件并将所有调用重定向到HSQLDB驱动程序。也许它对某些人也有用

  • GitHub存储库:

您能确认数据库中是否有表名“Emp”吗?是的,创建了一个表,其中包含一些数据。此外,在我的桌面上添加了两个或三个名为Test.odb、Test.odb.properties的文件,您能试试这个…语句吗