У меня есть база данных в libreoffice Base (Debian), которую мне нужно экспортировать в виде XML-файла. Я создал фрагмент Java-кода Eclipse, который выглядит следующим образом:
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()
? Я не могу обнаружить ничего плохого в вашем коде, но, возможно, вмешавшись, вы увидите, что что-то идет не так... - person Jamey   schedule 14.04.2014createDataSet()
. Возможно, вы могли бы включить ведение журнала для трассировки и добавить журнал к своему вопросу. Похоже, DBUnit использует SLF4J. - person Jamey   schedule 14.04.2014FlatDtdWriter.write(IDataSet dataSet)
(я думаю, что это та, которую вы бы вызывали при настройке), то это основная часть кода. В частности, следующий dataSet.getTableNames() должен выделить проблему (поскольку невозможность найти имена таблиц даст результат, который вы получаете в настоящее время). В качестве альтернативы вы можете попробовать ввести имена ваших таблиц вcreateDataSet(tableNames)
. - person Jamey   schedule 14.04.2014FlatDtdWriter.write(IDataSet dataSet)
Должен ли он быть у меня? - person xcc140   schedule 14.04.2014FlatXmlDataSet.write(fullDataSet, new FileOutputStream("/home/debian/Documents/fulldataset.xml"));
и войти (сначала вам нужно выйти изnew FileOutputStream("")
). Также вы пытались добавить ведение журнала трассировки? - person Jamey   schedule 14.04.2014