H2 createTcpServer() не создает сервер?

прочитав документацию H2, я написал это простое приложение для создания базы данных H2 в локальный каталог:

public static void main(String[] args) throws SQLException {

    String path = "C:/Temp/H2/";
    File fpath = new File(path);

    fpath.mkdirs();
    FileUtils.recursiveDelete(fpath);

    String dbName = "tata";
    String connection = "jdbc:h2:file:" + path + dbName;

    Server server = Server.createTcpServer(connection);

    server.start();
    server.stop();

}

Эта программа работает нормально, но когда я проверяю целевой каталог, базы данных там нет... (я использую версию 1.3.161)


person Jérôme Verstrynge    schedule 09.11.2011    source источник
comment
Вы должны использовать Server.createTcpServer()   -  person Thomas Mueller    schedule 09.11.2011
comment
@ Томас, но разве это не то, что я сделал?   -  person Jérôme Verstrynge    schedule 10.11.2011
comment
@JVestry нет, ты используешь Server.createTcpServer(connection), а не Server.createTcpServer()   -  person Thomas Mueller    schedule 10.11.2011


Ответы (1)


Вам нужно фактически получить доступ к базе данных, файлы создаются лениво:

server.start();
DriverManager.getConnection(connection);
server.stop();

Добавленная строка в середине создает файл tata.h2.db там, где ожидалось (проверено с 1.3.155).

person Tomasz Nurkiewicz    schedule 09.11.2011
comment
Да и собственно серверу не нужно знать о БД, значит использовать Server.createTcpServer(); - person Thomas Mueller; 09.11.2011
comment
@Thomas Извините, это двусмысленно, что вы подразумеваете под сервером, которому не нужно знать о базе данных? Документацию трудно интерпретировать. Он не дает достаточно информации для правильной интерпретации. - person Jérôme Verstrynge; 10.11.2011
comment
@JVestry Я постараюсь улучшить документацию. - person Thomas Mueller; 10.11.2011