【发布时间】:2014-04-14 09:52:50
【问题描述】:
我在 libreoffice Base (Debian) 中有一个数据库,我需要将表导出为 xml 文件。我创建了一段 Eclipse Java 代码,如下所示:
package NewDB;
import java.io.FileOutputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import org.dbunit.database.DatabaseConnection;
import org.dbunit.database.IDatabaseConnection;
import org.dbunit.database.QueryDataSet;
import org.dbunit.dataset.IDataSet;
import org.dbunit.dataset.xml.FlatXmlDataSet;
import org.dbunit.dataset.DataSetException;
public class ExtractTestDataSet {
public static void main(String[] args) throws Exception {
// database connection
Class driverClass = Class.forName("org.hsqldb.jdbcDriver");
Connection jdbcConnection = DriverManager.getConnection "jdbc:hsqldb:/home/debian/Documents/database.odb", "sa", "");
IDatabaseConnection connection = new DatabaseConnection(jdbcConnection);
// full database export
IDataSet fullDataSet = connection.createDataSet();
FlatXmlDataSet.write(fullDataSet, new FileOutputStream("/home/debian/Documents/fulldataset.xml"));
}
}
查看 DBunit 页面和其他各种站点后,此代码应该是正确的;数据库已填充,连接有效,代码中没有警告或错误,但是当创建 xml 文件时,唯一的内容如下:
<?xml version='1.0' encoding='UTF-8'?>
<dataset/>
有人知道为什么没有导出数据集吗?
谢谢
【问题讨论】:
-
您是否尝试过调试步入
connection.createDataSet()?我无法发现您的代码有任何问题,但也许介入会突出出现问题... -
是的,我已经尝试过进入它,并且连接很好。我什至添加了一行来测试连接,它没有给出任何错误,还有一条 SQL 警告行,它没有给出任何警告。谢谢
-
对不起,我明确指的是
createDataSet()方法。也许您可以打开日志记录以跟踪并将日志添加到您的问题中。看起来 DBUnit 使用 SLF4J。 -
其实看起来那个方法做的很少,所以别费心了。不过,也许日志记录会有所帮助......
-
此外,如果您可以在
FlatDtdWriter.write(IDataSet dataSet)中获得一个断点(我认为您将使用您的设置调用该断点),那么这就是代码的核心。特别是,以下 dataSet.getTableNames() 应该突出显示问题(因为找不到表名将给出您当前获得的输出)。或者,您可以尝试将您的表名输入createDataSet(tableNames)。
标签: java xml jdbc dbunit libreoffice-base