我正在关注Java:如何编程 - 第24章。本章讨论Java中的数据库实现。我按照步骤设置“Derby”,但是我收到错误java.sql.SQLException: Database 'books' not found.
。
我检查了$ 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
,它会显示已设置的数据库。我在eclipse中将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 :(得分:0)
我认为问题是。通过ij
创建数据库时,我必须与源文件位于同一目录中。现在在eclipse下我认为这意味着我需要在包文件夹(JAVAProject / src / package)下,但这是错误的。我必须在(JAVAProject)。