java执行sql jar包_java – 如何将SQLite数据库包含在可执行文件Jar中?

我创建了一个使用SQLite作为本地数据库的Swing应用程序。数据库文件位于项目的根目录中。

Project/DatabaseFile

应用程序在Eclipse上运行正常,但是当我运行打包的可执行文件Jar时,会收到以下错误:

No such table : table1

这意味着数据库不可访问。当我检查结果JAR文件的内容时,数据库文件不再存在了。

在代码中,我已经链接数据库如下:

jdbc:sqlite:DatabaseFile

我的问题是,如何将SQLite数据库包含在可执行文件Jar中?

编辑

当我将数据库文件放在源文件夹Project / src / DatabaseFile中并将路径更改为jdbc:sqlite:src / DatabaseFile时,它在Eclipse上工作,但在Jar文件作为java -jar Project.jar运行时再次运行。它说:

path to 'src/DatabaseFile': 'C:\Users\name\src' does not exist

我想我需要指定数据库的相对路径。

编辑

这是我如何连接到数据库:

public Connection getConnection(){

try{

Class.forName("org.sqlite.JDBC").newInstance();

con = DriverManager.getConnection("jdbc:sqlite:src/DatabaseFile");

} catch (Exception e) {

Log.fatal("Méthode: getConnection() | Class : SQLiteConnection | msg system : " + e.getMessage());

}

return con;

}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java下连接SQLite数据库 一、下载SQLite数据库的JDBC:http://www.zentus.com/sqlitejdbc/ 二、将下载到的包解压后得到jar包放到%JAVA_HOME%\lib下,并且将其添加到ClassPath系统环境变量。一定要保证在类路径ClassPath有该jar包,并且保证在JAVA库路径JAVA Library Path有本地库Native Library(\workspace\"Web应用"\WebRoot\WEB-INF\lib\下最好也要加入该jar包)。"SQLite.JDBCDriver"作为JDBC的驱动程序类名。连接JDBC的URL格式为jdbc:sqlite:/path。这里的path为指定到SQLite数据库文件的路径,例如: jdbc:sqlite://dirA/dirB/dbfile jdbc:sqlite://DRIVE:/dirA/dirB/dbfile jdbc:sqlite://COMPUTERNAME/shareA/dirB/dbfile 三、下面是使用SQLite的两段代码以供参考: 代码段1: 1 import java.sql.*; 2 import org.sqlite.JDBC; 3 4 public class SQLiteTest { 5 public static void main(String[] args) { 6 try { 7 // The SQLite (3.3.8) Database File 8 // This database has one table (pmp_countries) with 3 columns (country_id, country_code, country_name) 9 // It has like 237 records of all the countries I could think of. 10 String fileName = "c:/pmp.db"; 11 // Driver to Use 12 // http://www.zentus.com/sqlitejdbc/index.html 13 Class.forName("org.sqlite.JDBC"); 14 // Create Connection Object to SQLite Database 15 // If you want to only create a database in memory, exclude the +fileName 16 Connection conn = DriverManager.getConnection("jdbc:sqlite:"+fileName); 17 // Create a Statement object for the database connection, dunno what this stuff does though. 18 Statement stmt = conn.createStatement(); 19 // Create a result set object for the statement 20 ResultSet rs = stmt.executeQuery("SELECT * FROM pmp_countries ORDER BY country_name ASC"); 21 // Iterate the result set, printing each column 22 // if the column was an int, we could do rs.getInt(column name here) as well, etc. 23 while (rs.next()) { 24 String id = rs.getString("country_id"); // Column 1 25 String code = rs.getString("country_code"); //
Java可以通过使用JDBC(Java Database Connectivity)和SQLite JDBC驱动程序来创建SQLite数据库。 首先,确保在Java项目包含SQLite JDBC驱动程序的JAR文件。你可以从SQLite官方网站下载最新的驱动程序。 然后,编写创建数据库Java代码。以下是一个简单的例子: ```java import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Statement; public class CreateSQLiteDatabase { public static void main(String[] args) { Connection connection = null; Statement statement = null; try { // 加载SQLite JDBC驱动 Class.forName("org.sqlite.JDBC"); // 连接到SQLite数据库 connection = DriverManager.getConnection("jdbc:sqlite:/path/to/database.db"); // 创建一个Statement对象 statement = connection.createStatement(); // 执行创建数据库SQL语句 String sql = "CREATE TABLE employees (id INTEGER PRIMARY KEY, name TEXT, age INTEGER)"; statement.executeUpdate(sql); System.out.println("数据库创建成功!"); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } finally { // 关闭数据库资源 try { if (statement != null) statement.close(); if (connection != null) connection.close(); } catch (SQLException e) { e.printStackTrace(); } } } } ``` 在上面的例子,我们首先加载SQLite JDBC驱动(通过`Class.forName("org.sqlite.JDBC")`)。 然后使用`DriverManager.getConnection("jdbc:sqlite:/path/to/database.db")`连接到SQLite数据库。 创建一个Statement对象,然后使用`statement.executeUpdate(sql)`执行创建数据库SQL语句。 最后,关闭连接和Statement对象。 以上是使用Java创建SQLite数据库的简单示例。你可以根据自己的需求进行修改和扩展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值