Полный набор данных Экспортировать пустой набор данных

У меня есть база данных в 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/>

У кого-нибудь есть идеи, почему набор данных не экспортируется?

Спасибо


person xcc140    schedule 14.04.2014    source источник
comment
Вы пробовали выполнять отладку в connection.createDataSet()? Я не могу обнаружить ничего плохого в вашем коде, но, возможно, вмешавшись, вы увидите, что что-то идет не так...   -  person Jamey    schedule 14.04.2014
comment
Да, я пытался войти в него, и связь в порядке. Я даже добавил строку для проверки соединения, и она не выдает ошибок, а также строку предупреждения SQL, которая не выдает никаких предупреждений. Спасибо   -  person xcc140    schedule 14.04.2014
comment
Извините, я явно имел в виду метод createDataSet(). Возможно, вы могли бы включить ведение журнала для трассировки и добавить журнал к своему вопросу. Похоже, DBUnit использует SLF4J.   -  person Jamey    schedule 14.04.2014
comment
На самом деле похоже, что этот метод делает очень мало, так что не беспокойтесь. Хотя, возможно, регистрация поможет...   -  person Jamey    schedule 14.04.2014
comment
Кроме того, если вы можете получить точку останова внутри FlatDtdWriter.write(IDataSet dataSet) (я думаю, что это та, которую вы бы вызывали при настройке), то это основная часть кода. В частности, следующий dataSet.getTableNames() должен выделить проблему (поскольку невозможность найти имена таблиц даст результат, который вы получаете в настоящее время). В качестве альтернативы вы можете попробовать ввести имена ваших таблиц в createDataSet(tableNames).   -  person Jamey    schedule 14.04.2014
comment
Извините, я запутался, у меня нет FlatDtdWriter.write(IDataSet dataSet) Должен ли он быть у меня?   -  person xcc140    schedule 14.04.2014
comment
Он находится в банке dbunit, но лучше всего поставить точку останова на FlatXmlDataSet.write(fullDataSet, new FileOutputStream("/home/debian/Documents/fulldataset.xml")); и войти (сначала вам нужно выйти из new FileOutputStream("")). Также вы пытались добавить ведение журнала трассировки?   -  person Jamey    schedule 14.04.2014
comment
Сейчас попробую вести трассировку, спасибо   -  person xcc140    schedule 14.04.2014
comment
Оказывается, база данных .odb была подключена к другому серверу, что объясняет пустой набор данных. Спасибо за вашу помощь с этим Джейми.   -  person xcc140    schedule 22.04.2014
comment
Не беспокойтесь, рад, что вы нашли проблему. :D   -  person Jamey    schedule 22.04.2014


Ответы (1)


Оказывается, база данных .odb была подключена к другому серверу, что объясняет пустой набор данных.

person xcc140    schedule 22.04.2014