다음 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();
}
}
}
코드 문제가 아닙니다. 데이터베이스를 생성하면됩니다. statement와 CREATE TABLE ddl 명령에서 execute() 메소드를보십시오. –
@ChrisGerken 데이터베이스가 이미 생성되었습니다. 커맨드 라인 (ij 툴)을 통해 데이터베이스에있는 모든 데이터를 볼 수 있습니다. – fafinu
@ChrisGerken 감사합니다. 데이터베이스가 문제라고 생각했습니다. 데이터베이스를 만들었지 만 위치가 다릅니다. 그것을 알아 냈다. – fafinu