2011-10-21 6 views
0

글쎄, 서버 모드에서 hsqldb를 생성하고 다른 클라이언트 (예 : runManagerSwing.bat의 서버)에서이 서버에 연결해야합니다.코드 보류 클라이언트에서 hsqldb를 실행하십시오.

public static Server server = new Server(); 


    public static void main(String[] args) throws IOException, ServerAcl.AclFormatException, SQLException { 
     HsqlProperties p = new HsqlProperties(); 
     p.setProperty("server.database.0", "file:./db/myHsqlDb"); 
     p.setProperty("server.dbname.0", "idt_simulatordb"); 
     p.setProperty("server.port", "9001"); 

     server.setProperties(p); 
     server.setSilent(false); 
     server.setTrace(true); 
     server.start(); 


     (1) Connection conn = DriverManager.getConnection("jdbc:hsqldb:hsql://localhost:9001/idt_simulatordb", "sa", ""); 
     Statement st = conn.createStatement(); 
     String expression1 = "DROP SCHEMA IF EXISTS simulators CASCADE;\n"; 
     String expression2 = "CREATE SCHEMA SIMULATORS AUTHORIZATION SA;"; 
     String expression3 = "CREATE TABLE SIMULATORS.dirtyhack();"; 
     String expression4 = "DROP SCHEMA IF EXISTS myschema CASCADE;\n"; 
     String expression5 = "CREATE SCHEMA myschema AUTHORIZATION SA;"; 
     st.executeUpdate(expression1); 
     st.executeUpdate(expression2); 
     st.executeUpdate(expression3); 
     st.executeUpdate(expression4); 
     st.executeUpdate(expression5); 
     st.close(); 
     conn.close(); 

     (2)server.shutdown(); 
    } 

내가 라인 (1)를 추가 내 서버가 괜찮 것을 확인하려면 : 다음은 내 코드입니다. 그리고 그것은 정말로 ok이다. 하지만 다른 도구에서 연결하고 싶습니다. 그렇게하기 위해 (2) 전에 break point를 넣고 클라이언트 runManagerSwing.bat를 시작하십시오. 클라이언트가 서버를 성공적으로 찾았지만 일시 중단했습니다. 때로는 선 (1)과 선 (2) 사이에 여러 단계를 거친다.

  1. 왜 발생합니까? 어쩌면 다른 스레드에서 서버를 시작해야합니까? 그렇게하는 방법?
  2. 두 번째 질문입니다. 종료 후 모든 hsqldb 파일을 지우고 싶습니다 (심지어 .properties 및 .script). 그렇게 할 기본 설정이 있습니까 아니면 수동으로 삭제해야합니까?

p.s. 죄송합니다 내 영어

답변

0

귀하의 프로그램은 별도의 스레드에서 서버를 시작하는 server.start()를 사용합니다. 이것은 server.start()가 실행 된 후에 서버에 연결할 수있는 방법입니다. 동일한 스레드 인 경우 (1)로 표시된 코드는 실행되지 않습니다.

끝에 server.shutdown() 행을 제거하고 중단 점을 두지 않으면 DatabaseManagerSwing에서 연결할 수 있습니다. 서버를 종료하려면 DatabaseManagerSwing을 사용하고 "SHUTDOWN"SQL 문을 실행하십시오.

IDE에서 중단 점을 사용하면 다른 스레드의 실행도 일시 중단 될 수 있습니다.

데이터베이스 파일을 자동으로 삭제할 방법이 없습니다. 다음 버전 2.2.6에서는 정적 mathod가 데이터베이스 파일 집합을 삭제하는 유틸리티로 사용됩니다.

+0

많은 설명이 필요합니다. –

관련 문제