【发布时间】:2011-09-23 20:40:20
【问题描述】:
我不知道如何在 Java .jar 文件中包含 SQLite 数据库以进行部署(通过 Java WebStart)。
数据库确实不需要在运行时更新...它本质上是一个美化的配置文件。
顺便说一下,使用 Eclipse。
【问题讨论】:
-
棘手。使用Apache Derby 或类似的可嵌入数据库似乎要容易得多。
标签: java sqlite jar java-web-start
我不知道如何在 Java .jar 文件中包含 SQLite 数据库以进行部署(通过 Java WebStart)。
数据库确实不需要在运行时更新...它本质上是一个美化的配置文件。
顺便说一下,使用 Eclipse。
【问题讨论】:
标签: java sqlite jar java-web-start
SQLite 需要单独的文件,因为how the engine ensures locking and ACID。即使不需要更新数据库,SQLite 也仅设计用于直接文件访问(或内存支持,但不是从 Java 或其他主机提供的 ;-) - SQLite 在这里表明它不是纯 Java 解决方案,也不是为不使用基本系统 IO 子系统的系统设计的。
SQLite 数据文件可以在开始时从 JAR 中提取到一个临时位置(如果需要,最后放回那里) - 但不是类似于这种方法的东西,不可能。任务本身并不复杂,但需要完成另一件事,并且可能需要在某些环境中不可用的额外权限。
编码愉快。
【讨论】:
【讨论】:
另一个值得考虑的好选择是 derby,javadb。它现在与 java 捆绑在一起,安装速度非常快,性能也很好。
问候, 斯蒂芬
【讨论】:
将 SQLite 数据库放入项目内的资源文件夹(包)中。
这样连接:
public class SQLiteProject extends javax.swing.JFrame {
:
private void formWindowOpened(java.awt.event.WindowEvent evt) {
CModel.connectDB(getClass().getResource("/resources/database.sqlite").toString());
}
public class CModel {
:
public static Connection connectDB(String cstr) {
try {
Class.forName("org.sqlite.JDBC");
Conn = DriverManager.getConnection("jdbc:sqlite::resource:" + cstr);
JOptionPane.showMessageDialog(null, "Connect!");
return Conn;
} catch (ClassNotFoundException | SQLException | HeadlessException e) {
JOptionPane.showMessageDialog(null, e);
}
return null;
}
使用 Add JAR/Folder 下载并添加 sqlite-jdbc-3.8.7.jar 库 ...
使用 Clean 和 Build 构建项目(创建 dist 文件夹并复制库)
使用以下方法制作一个胖罐: http://www.oracle.com/technetwork/articles/javase/single-jar-141905.html
【讨论】: