[英]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.