繁体   English   中英

找不到带有jar文件的Derby Embedded抛出数据库异常

[英]Derby Embedded with jar file throw database not found exception

嗨,我用一个简单的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的PC上运行jar文件时,它必须运行.. !!! 我已经在其他电脑上尝试过,它给了我同样的错误..! 我该如何创建数据库。 有人知道请帮忙..!

构建jar之后,转到项目文件夹并复制dist文件夹。 将其移动到新位置,并将数据库文件夹复制到刚移动的新dist文件夹中。 那应该做; 在大多数情况下,人们对Derby遇到问题是因为Java文件路径。

关于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;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM