在MacOS Sierra上设置Derby

时间:2016-10-19 22:00:16

标签: java derby macos-sierra

我正在关注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();
        }
    }
}

1 个答案:

答案 0 :(得分:0)

我认为问题是。通过ij创建数据库时,我必须与源文件位于同一目录中。现在在eclipse下我认为这意味着我需要在包文件夹(JAVAProject / src / package)下,但这是错误的。我必须在(JAVAProject)。