2015-03-21 21 views
6

Koduję aplikację serwer-klient w Javie i muszę zaimplementować lokalną bazę danych po stronie serwera i zdecydowałem się na silnik bazy danych H2.Programowo uruchamia bazę danych H2

Jeszcze jedna rzecz do dodania to to, że I usa połączenie TCP, aby uruchomić i uruchomić bazę danych. To właśnie zebrała do tej pory:

Class.forName("org.h2.Driver"); 
Server server = Server.createTcpServer(DB_PATH).start(); 

Connection currentConn = DriverManager.getConnection(DB_PATH, DB_USER, DB_PASSWORD); 

Gdzie ciąg połączenia jest jdbc:h2:tcp://localhost/~/test.

Ten fragment kodu powraca z wyjątkiem:

Feature not supported: "jdbc:h2:tcp://localhost/~/test" [50100-176] 

I po this article.

Odpowiedz

11

Coś jak to powinno działać

Server server = null; 
      try { 
       server = Server.createTcpServer("-tcpAllowOthers").start(); 
       Class.forName("org.h2.Driver"); 
       Connection conn = DriverManager. 
        getConnection("jdbc:h2:tcp://localhost/~/stackoverflow", "sa", ""); 
       System.out.println("Connection Established: " 
         + conn.getMetaData().getDatabaseProductName() + "/" + conn.getCatalog()); 

      } catch (Exception e) { 
       e.printStackTrace(); 

i wyjście jest Connection założenia: H2/StackOverflow

został przetestowany z h2-1.4.184

5

To moja prosta receptora H2 DBManager - po prostu nazwij jego nazwę DBManager.java i zapraszam do ponownego użycia:

import java.sql.SQLException; 

import org.h2.tools.Server; 

public class DBManager { 

    private static void startDB() throws SQLException { 
     Server.createTcpServer("-tcpPort", "9092", "-tcpAllowOthers").start(); 

    } 

    private static void stopDB() throws SQLException { 
     Server.shutdownTcpServer("tcp://localhost:9092", "", true, true); 
    } 

    public static void main(String[] args) { 

     try { 
      Class.forName("org.h2.Driver"); 

      if (args.length > 0) { 
       if (args[0].trim().equalsIgnoreCase("start")) { 
        startDB(); 
       } 

       if (args[0].trim().equalsIgnoreCase("stop")) { 
        stopDB(); 
       } 
      } else { 
       System.err 
         .println("Please provide one of following arguments: \n\t\tstart\n\t\tstop"); 
      } 

     } catch (Exception e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 

    } 

} 
3

Udało mi się to nieco łatwiej zaakceptować ustawienia domyślne:

 Server server = Server.createTcpServer().start();