2014-11-23 4 views
0

몇 주 전에 "데이터베이스를 Java에 포함시키는 방법"에 대한 질문을 던졌습니다. 덕분에, 나는 H2 db로 그 일을 성공시킵니다. 삽입 버튼을 클릭 할 때 이름과 성을 삽입하고 표시 버튼을 누르면 JTextArea에 이름과 성을 표시하는 간단한 응용 프로그램을 만들었습니다. 삽입 및 표시 버튼을 누르면 Eclipse에서 완벽하게 작동합니다. 내 문제는 다음과 같습니다 프로젝트를 내보내고 Runnable JAR 파일을 선택합니다. 바탕 화면에서 앱을 시작한 다음 표시 버튼을 클릭하면 데이터베이스의 데이터가 JTextArea에 표시되지 않습니다. 왜 이런 일이 발생합니까?Java에서 데이터베이스 응용 프로그램을 올바르게 내보내는 방법

static final String driver = "org.h2.Driver"; 
      static final String DB_URL = "jdbc:h2:lib/database"; 
      Connection conn = null; 
    public void sql(){ 
       try{ 
        Class.forName(driver); 
        System.out.println("Connect to my database"); 
        conn = DriverManager.getConnection(DB_URL, "root", "#mysql"); 
        System.out.println("Is connect"); 
       }catch(SQLException sql){ 
        sql.printStackTrace(); 
       }catch(Exception e){ 
        e.printStackTrace(); 
       } 
     } 
class insertClass implements ActionListener{ 
     public void actionPerformed(ActionEvent ev){ 
      try{ 
       String update = "INSERT INTO bazadedate.persoane(Name, Surname) values('"+ne.getText()+"', '"+se.getText()+"')"; 
       Statement st; 
       st = conn.createStatement(); 
       st.executeUpdate(update); 
      }catch(SQLException s){ 
       s.printStackTrace(); 
      } 
     } 
    } 

    class showClass implements ActionListener{ 
     String name, surname; 
     public void actionPerformed(ActionEvent ev){ 
      try{ 
       String show = "SELECT * FROM bazadedate.persoane"; 
       Statement st; 
       ResultSet rs; 
       st = conn.createStatement(); 
       rs = st.executeQuery(show); 
       while(rs.next()){ 
        name = rs.getString("Name"); 
        surname = rs.getString("Surname"); 
        text.append(name + " " + surname + "\n"); 
       } 
      }catch(SQLException s){ 
       s.printStackTrace(); 
      } 
     } 
    } 
+1

'java -jar YourJarFile.jar'를 사용하여 프로그램을 실행하고 콘솔에 표시된 오류를 확인하십시오. –

+0

오류가없고 H2 콘솔 환경 설정에서 "다른 컴퓨터의 연결 허용"을 선택했지만 여전히 작동하지 않습니다. – AurelianStefan

+0

그래서 데이터베이스가있는 컴퓨터가 아닌 다른 컴퓨터에서 코드를 실행하고 있습니까? 데이터베이스 URL은 다른 호스트에 연결해야한다고 말하지 않습니다. 'lib/database'에서 데이터베이스를 읽습니다. –

답변

0

jdbc:h2:~/data/databaseName를 사용하는 I 제안 : 다음은 코드의 일부이다. 이것은 현재 사용자 홈 디렉토리에 상대적입니다. 또는 절대 경로 인 jdbc:h2:/data/databaseName을 사용하십시오.

jdbc:h2:lib/database 형태의 데이터베이스 URL을 사용하지 않는 것이 좋습니다. H2의 최신 버전에서는 실제로 작동하지 않으며 예외가 발생합니다. 데이터베이스 URL은 데이터베이스 파일이 lib상대 디렉토리의 프로세스의 현재 작업 디렉토리에 저장된다는 것을 의미합니다. 현재 작업 디렉토리는 이며 일반적으로 응용 프로그램을 시작한 곳의입니다. 동일한 디렉토리에 있지 않은 다른 응용 프로그램을 사용하는 경우이 데이터베이스 URL을 사용하면 다른 데이터베이스로 끝납니다.

+0

내가 말했듯이 내가 다른 컴퓨터에 응용 프로그램을 넣었을 때 여전히 작동하지 않습니다. . 즉, 내 컴퓨터에서 데이터베이스에 액세스 할 수 있지만 원하는 작업은 다른 컴퓨터에서 액세스하는 것입니다. 다른 사용자가 다른 컴퓨터에서 내 인터페이스를 통해 "주 데이터베이스"에 이름과 성을 삽입 할 수 있으며 데이터베이스에 액세스 할 때 다른 컴퓨터의 다른 사용자가 삽입 한 데이터를보고 싶습니다. – AurelianStefan

+0

다른 _computer_에 저장된 데이터베이스에 액세스하려면 서버 모드를 사용해야합니다. 자세한 내용은 설명서를 참조하십시오. 하지만 그것은 원래의 질문이 아니 었습니다. –

+0

토마스 뮐러 씨, 제가 원해요 .. 조금 작은 힌트를 주시면 제가 그것에 대해 줄 수 있습니까? – AurelianStefan

관련 문제