Jdbc Derby DB:表/视图不';不存在错误42X05 我安装了一个Derby DB,并打开了一个名为“MyDbTest”的连接

Jdbc Derby DB:表/视图不';不存在错误42X05 我安装了一个Derby DB,并打开了一个名为“MyDbTest”的连接,jdbc,derby,Jdbc,Derby,我使用SQL命令为“MyDbTest”连接创建了一个名为BOOK的表: 创建表BOOK(ID INT、DESCRIPTION VARCHAR(20)、UNITCOST VARCHAR(20)、ISBN VARCHAR(20)、nbofpage INT) 我使用命令“startNetworkServer.bat”运行Derby服务器 我运行了以下代码(使用openjpa): 公共班机{ public static void main(String[] args) throws SQLExcep

我使用SQL命令为“MyDbTest”连接创建了一个名为BOOK的表:

创建表BOOK(ID INT、DESCRIPTION VARCHAR(20)、UNITCOST VARCHAR(20)、ISBN VARCHAR(20)、nbofpage INT)

  • 我使用命令“startNetworkServer.bat”运行Derby服务器

  • 我运行了以下代码(使用openjpa):
  • 公共班机{

      public static void main(String[] args) throws SQLException, ClassNotFoundException {
    
            System.out.println("\n\n>>> Executing : " + Main.class.toString() + " <<<\n");    
            persistBook(new Book(new Long(5000), "H2G2", "Best IT Scifi Book", new Float(12.5), "1234-5678-5678",
                    new Integer(247)));    
            Book book = findBook(new Long(5000));    
           System.out.println("# " + book);
      }
    
      /**
       * Gets a database connection
       */
      static {
        try {
          Class.forName("org.apache.derby.jdbc.ClientDriver");
        } catch (ClassNotFoundException e) {
          e.printStackTrace();
        }
      }
    
      private static Connection getConnection() throws SQLException {
            return DriverManager.getConnection("jdbc:derby://localhost:1527/MyDbTest;create=true", "app", "app");
      }
    
      /**
       * Persists the book to the database
       */
      private static void persistBook(Book book) throws SQLException {
    
        String query = "INSERT INTO BOOK (ID, TITLE, DESCRIPTION, UNITCOST, ISBN, NBOFPAGE) VALUES (?, ?, ?, ?, ?, ?)";
    
        try (PreparedStatement stmt = getConnection().prepareStatement(query)) {
    
                stmt.setLong(1, book.getId().longValue());
          stmt.setString(2, book.getTitle());
          stmt.setString(3, book.getDescription());
                stmt.setFloat(4, book.getUnitCost().longValue());
          stmt.setString(5, book.getIsbn());
                stmt.setInt(6, book.getNbOfPage().intValue());
    
          stmt.executeUpdate();
        }
      }
    }
    
    publicstaticvoidmain(字符串[]args)抛出SQLException、ClassNotFoundException{
    
    System.out.println(“\n\n>>>正在执行:”+Main.class.toString()+“我出现此错误,因为我在SELECT语句中使用了数据库名称而不是表的名称。

    创建表的过程不清楚。很难说。可能你的程序没有连接到同一个数据库?可能是不同的用户和/或架构?我考虑过了。我键入了ij shell:“显示连接”,我得到了:CONNECTION0*-jdbc:derby:MyDbTest*=current connectionAlso,代码中没有JPA。它只是jdbc。除此之外,代码没有关闭数据库连接。这应该是固定的。derby中“表不存在”的3个常见原因:可能是