2017-12-21 11 views
1

Netbeans에서 Java 프로젝트를 개발했습니다. 이제 내가 지정한 데이터베이스를 먼저 시작하면 다음 코드는 실행할 수있는 문제가 있습니다.Netbeans : 프로그래밍 방식으로 Derby 데이터베이스를 시작하는 방법

private boolean DriverIsLoaded() 
{ 
    try 
    { 
     Class.forName("org.apache.derby.jdbc.ClientDriver"); 
     return true; 
    } 
    catch(ClassNotFoundException e) 
    { 
     e.printStackTrace(); 
     return false; 
    } 
} 
private boolean openConnectionAndCheck() 
{ 
    try 
    { 
     connection = DriverManager.getConnection("jdbc:derby://localhost:1527/myDatabase;create=true", "Administrator", "Administrator"); 
     return true; 
    } 
    catch(SQLException e) 
    { 
     e.printStackTrace(); 
     return false; 
    } 
} 

Netbeans 안에 데이터베이스를 만들었습니다. 내 질문은, 어떻게 jdbc 데이터베이스 programatically 시작할 수 있습니까?

+0

가능한 [NetBeans. 호스팅 데이터베이스에 연결] (https://stackoverflow.com/questions/5589467/netbeans-connect-to-hosting-database) – Squareoot

답변

0

Derby ClientDriver를 사용하고 jdbc:derby://host:port/path/to/database 형태의 JDBC 연결 URL을 지정하는 것과 같은 Derby 클라이언트 - 서버 구성의 요점은 클라이언트와 서버가 일반적으로 서로 다른 컴퓨터에서 독립적으로 운영된다는 것입니다. 여러 개의 클라이언트가 있지만 하나의 서버 만 있습니다.

즉, 클라이언트가 "프로그래밍 방식으로 jdbc 데이터베이스를 시작합니다"라는 개념은 이러한 종류의 구성에 예상되는 동작이 아닙니다. 클라이언트와 서버는 같은 컴퓨터에 있지 않습니다!

아마 당신이 원하는 것은 더비 "임베디드"구성입니다.

여기 더비 배포 구성의 유형에 대한 자세한 읽기 : http://db.apache.org/derby/docs/10.14/getstart/cgstutorialintro.html

그리고 아마도 당신이 정말로 무엇을 찾고 더비 네트워크 서버를 배포, 구성 및 운영하는 방법에 대한 자세한 내용은를하는 경우 여기에서 시작 : http://db.apache.org/derby/docs/10.14/adminguide/index.html

0

의 프로그래밍 Derby를 찾고 있습니다. 내 Programming Derby with JDBC 튜토리얼을 살펴 가지고 전체 자습서

package com.zetcode; 

import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.SQLException; 
import java.sql.Statement; 
import java.util.logging.Level; 
import java.util.logging.Logger; 

public class CreateCars { 

    public static void main(String[] args) { 

     Connection con = null; 
     Statement st = null; 

     String url = "jdbc:derby:testdb;user=USER12"; 

     try { 

      System.setProperty("derby.system.home", "/home/janbodnar/.derby"); 

      con = DriverManager.getConnection(url); 
      st = con.createStatement(); 
      st.executeUpdate("CREATE TABLE CARS(ID INT PRIMARY KEY," 
        + "NAME VARCHAR(30), PRICE INT)"); 
      st.executeUpdate("INSERT INTO CARS VALUES(1, 'Audi', 52642)"); 
      st.executeUpdate("INSERT INTO CARS VALUES(2, 'Mercedes', 57127)"); 
      st.executeUpdate("INSERT INTO CARS VALUES(3, 'Skoda', 9000)"); 
      st.executeUpdate("INSERT INTO CARS VALUES(4, 'Volvo', 29000)"); 
      st.executeUpdate("INSERT INTO CARS VALUES(5, 'Bentley', 350000)"); 
      st.executeUpdate("INSERT INTO CARS VALUES(6, 'Citroen', 21000)"); 
      st.executeUpdate("INSERT INTO CARS VALUES(7, 'Hummer', 41400)"); 
      st.executeUpdate("INSERT INTO CARS VALUES(8, 'Volkswagen', 21600)"); 
      DriverManager.getConnection("jdbc:derby:;shutdown=true"); 

     } catch (SQLException ex) { 

      Logger lgr = Logger.getLogger(CreateCars.class.getName()); 

      if (((ex.getErrorCode() == 50000) 
        && ("XJ015".equals(ex.getSQLState())))) { 

       lgr.log(Level.INFO, "Derby shut down normally", ex); 

      } else { 

       lgr.log(Level.SEVERE, ex.getMessage(), ex); 
      } 

     } finally { 

      try { 

       if (st != null) { 
        st.close(); 
       } 
       if (con != null) { 
        con.close(); 
       } 

      } catch (SQLException ex) { 
       Logger lgr = Logger.getLogger(CreateCars.class.getName()); 
       lgr.log(Level.WARNING, ex.getMessage(), ex); 
      } 
     } 
    } 
} 

: 는 여기에 코드입니다.