2016-10-19 5 views
0

다음 Java : How To Program - 제 24 장에서는 Java로 데이터베이스 구현을 다룹니다. 나는 "Derby"를 설치하는 단계를 밟았지만, java.sql.SQLException: Database 'books' not found.이라는 오류 메시지가 나타납니다.MacOS에서 Derby 설정 Sierra

$ PATH에 $ DERBY_HOME이 있는지 확인했습니다. $ DERBY_HOME이 올바른 폴더 (/Library/Java/JavaVirtualMachines/jdk1.8.0_101.jdk/Contents/Home/db)를 가리 킵니다.

$ JAVA_HOME을 확인했으며 올바르게 설정되었습니다 (/Library/Java/JavaVirtualMachines/jdk1.8.0_101.jdk/Contents/Home).

도구 ij을 사용할 수 있으며 설정중인 데이터베이스가 표시됩니다. 이클립스 패키지에 derby.jar을 추가했다. 다음은이 책의 코드입니다. 그러나 컴파일 할 때 오류가 발생합니다. java.sql.SQLException: Database 'books' not found.

온라인으로 살펴본 결과, //localhost:1527/books을 추가하는 것이 좋습니다. 하지만 내가 추가하면 나는 java.sql.SQLException: No suitable driver found for jdbc:derby://localhost:1527/books 오류가 발생합니다.

Class.forName("org.apache.derby.jdbc.ClientDriver").newInstance();을 사용하여 문제를 해결할 수 없다는 제안도있었습니다.

소스 코드가 들어있는 패키지와 동일한 패키지에 books.sql 데이터베이스를 복사/붙여 넣었습니다.

아무도 문제를 해결하는 방법을 알고 있습니까? 나는 MacOS Sierra를 사용하고있다.

public class DisplayAuthors { 

    public static void main(String [] args) { 
     final String DATABASE_URL = "jdbc:derby:books"; 
     final String SELECT_QUERY = "Select authorID, firstName, lastName from authors"; 


     try( 
       Connection connection = DriverManager.getConnection(
       DATABASE_URL, "deitel", "deitel"); 
       Statement statement = connection.createStatement(); 
       ResultSet resultSet = statement.executeQuery(SELECT_QUERY)){ 

      ResultSetMetaData metaData = resultSet.getMetaData(); 
      int numberOfCols = metaData.getColumnCount(); 

      System.out.printf("Authors of table of Books databse:%n%n"); 
      for(int i = 0; i < numberOfCols; i++) 
       System.out.printf("%-8s\t",metaData.getColumnName(i)); 

      System.out.println(); 

      while(resultSet.next()){ 
       for (int i = 1; i <= numberOfCols; i++) 
        System.out.printf("%-8s\t",resultSet.getObject(i)); 
        System.out.println(); 
      } 

     }catch(SQLException ex){ 
      ex.printStackTrace(); 
     } 
    } 
} 
+0

코드 문제가 아닙니다. 데이터베이스를 생성하면됩니다. statement와 CREATE TABLE ddl 명령에서 execute() 메소드를보십시오. –

+0

@ChrisGerken 데이터베이스가 이미 생성되었습니다. 커맨드 라인 (ij 툴)을 통해 데이터베이스에있는 모든 데이터를 볼 수 있습니다. – fafinu

+0

@ChrisGerken 감사합니다. 데이터베이스가 문제라고 생각했습니다. 데이터베이스를 만들었지 만 위치가 다릅니다. 그것을 알아 냈다. – fafinu

답변

0

문제가있는 것으로 나타났습니다. ij을 통해 데이터베이스를 만들 때 소스 파일과 동일한 디렉토리에 있어야했습니다. 지금 이클립스에서 나는 이것이 내가 패키지 폴더 (JAVAProject/src/package) 아래에 있어야한다는 것을 의미 할 것이라고 생각했다. 그러나 그것은 틀렸다. 나는 (JAVAProject) 밑에 있어야했다.

관련 문제