私はJavaに従っています:プログラム方法 - 第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
をeclipseのパッケージに追加しました。次のコードは本のコードですが、コンパイルするとエラーが発生します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