如何在jar文件中使用SQLite数据库?
我无法弄清楚如何在 Java .jar文件中包含SQLite数据库以进行部署(通过Java WebStart)。
数据库不需要在运行时更新……它本质上是一个美化的配置文件。
顺便说一句,使用Eclipse。
另一个值得考虑的好选择可能是derby,javadb。 它现在与java捆绑在一起,设置速度非常快,性能也很好。
此致,Stéphane
SQLite 需要单独的文件,因为引擎确保锁定和ACID 。 即使不需要更新数据库, SQLite也只能用于直接文件访问 (或内存支持,但不能从Java或其他主机提供;-) – SQLite显示它不是纯Java解决方案,也不是设计用于不使用基本系统IO子系统的系统。
SQLite数据文件可以在开始时从JAR 提取到临时位置 (如果需要,最后放回到那里) – 但除了类似于这种方法之外,不可能。 任务本身并不复杂,但是另一件事需要完成,可能需要在某些环境中不具备的额外权限。
快乐的编码。
你考虑过HSQLDB吗? 获得HSQLDB可能比使用sqlite更好地解决这个问题。 我知道你说这是只读的,但这显然不是你配置sqlite的方式。
其他选项是存储sqlite数据库的转储
sqlite3 .dump
在您的jar文件中,通过getResourceAsStream()从类路径启动时读取它,并在应用程序启动时创建数据库。 显然这增加了启动开销,并不理想,但可能会工作紧张。
编辑:刚刚找到代码,以编程方式实际创建数据库。 根据数据库的大小,存储SQL(必要时压缩)和启动时创建数据库可能不是那么可怕。
将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库…
使用清理和构建来构建项目(创建dist文件夹和副本库)
使用以下方法制作一个胖jar: http : //www.oracle.com/technetwork/articles/javase/single-jar-141905.html