【问题标题】:Derby Embedded with jar file throw database not found exceptionDerby Embedded with jar file throw database not found 异常
【发布时间】:2014-03-22 12:24:48
【问题描述】:

您好,我用一个简单的 java 应用程序创建了一个 derby 嵌入式数据库。 当在 Eclipse 上测试运行时,它运行完美。然后我导出为可运行的 jar 文件。通过 cmd 运行 找不到异常数据库..!!!

public class Main {

    public static void main(String[] args) throws SQLException {
    final String driver="org.apache.derby.jdbc.EmbeddedDriver";
    final String url="jdbc:derby:db/testdb";

    try {
        Class.forName(driver);
        Connection connection=DriverManager.getConnection(url);

        //connection.createStatement().execute("create table channels(channel varchar(20),topic varchar(20))");
    //  connection.createStatement().execute("insert into channels (channel,topic) values('hbo','action')");
    //  System.out.println("saved");
        PreparedStatement preStmt=connection.prepareStatement("select * from channels");
        ResultSet set=null;
        set=preStmt.executeQuery();

        while(set.next()){


            System.out.print(set.getString(1));
            System.out.println(set.getString(2));

        }       

    } catch (ClassNotFoundException e) {

        e.printStackTrace();
    }

    }

错误

Exception in thread "main" SQL Exception: Database 'db/testdb' not found.
        at org.apache.derby.impl.jdbc.Util.newEmbedSQLException(Unknown Source)
        at org.apache.derby.impl.jdbc.Util.newEmbedSQLException(Unknown Source)
        at org.apache.derby.impl.jdbc.Util.generateCsSQLException(Unknown Sourc

我的需要是当我在其他启用 java 的电脑上运行 jar 文件时它必须运行..!!! 我已经在其他电脑上尝试过它给了我同样的错误..! 我怎样才能创建数据库.... !! 有人知道请帮忙..!

【问题讨论】:

  • 创建应用程序启动的目录db...
  • 我将 url 更改为 create=true ,然后我运行它,jar 自动创建了 db 目录..现在它显示 table not found...
  • 我怎样才能让数据库和表只创建一次..!!
  • 您可以检查数据库元数据以检查表是否存在或查看this question

标签: java derby


【解决方案1】:

构建jar后,进入项目文件夹,复制dist文件夹。将其移动到新位置,并将数据库文件夹复制到您刚刚移动的新 dist 文件夹中。应该这样做;大多数时候人们对 Derby 有问题是因为 Java 文件路径。

【讨论】:

    【解决方案2】:

    关于 Derby 模式创建的魔力在于通过 jdbc url 本身。

    让我用 Java 8 Derby 来详细说明。运行 cmd

    添加环境路径相关的Derby:

    cd D:\Project\derbydb
    set JAVA_HOME=C:/Program Files/Java/jdk1.8.0_92
    set DERBY_HOME=C:/Program Files/Java/jdk1.8.0_92/db
    set PATH=%PATH%;%DERBY_HOME%/bin
    

    执行 ij 命令以使用 Derby。

    D:\Project\derbydb>ij
    ij version 10.11
    ij> CONNECT 'jdbc:derby:testdb;create=true';
    

    url="jdbc:derby:testdb;create=true" 时,[D:\Project\derbydb\testdb] 文件夹会从其运行位置自动初始化。然后,我们就可以像使用任何其他数据库一样正常使用 Derby。

    ij> CREATE TABLE cart (
          item VARCHAR(50),
          price DECIMAL (10,5),
          dt TIMESTAMP,
          primary key (item)
        );
    ij> select * from cart;
    

    Derby 存储库存在后,我们可以从任何地方连接它。

    C:\Users\oraclesoon>ij
    ij version 10.11
    ij> CONNECT 'jdbc:derby:D:\\Project\\derbydb\\testdb';
    ij> select * from cart;
    

    【讨论】:

      猜你喜欢
      • 2013-11-14
      • 1970-01-01
      • 2017-02-09
      • 1970-01-01
      • 1970-01-01
      • 2021-02-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多