首页 > 解决方案 > 在 Electron-Builder 应用程序中使用带有 sqlite3 的 sqlcipher

问题描述

背景

我正在尝试在 Electron 应用程序中使用 sqlite3 和 sqlcipher 加密我的 sqlite 数据库。

在 sqlite3 npm 页面

它说要像这样安装构建,

纱线添加 sqlite3@4.0.8 --build-from-source --sqlite_libname=sqlcipher --sqlite= brew --prefix--runtime=electron --target=4.0.0 --dist-url= https://atom.io/download /电子

我已经用 home brew 安装了 sqlcipher。

brew install sqlcipher

问题示例

我正在尝试在我的 Electron 应用程序中创建一个这样的加密数据库,

const sqlite3 = require('sqlite3').verbose();
var db = new sqlite3.Database('./src/encryptedDB.sql');

db.serialize(function() {
      db.run("PRAGMA KEY = 'secret'");
      db.run("PRAGMA CIPHER = 'aes-256-cbc'");
      db.run('CREATE TABLE IF NOT EXISTS clients (info TEXT)');
      var stmt = db.prepare('INSERT INTO clients VALUES (?)');
      for (var i = 0; i < 10; i++) {
        stmt.run('wunO Background Client Number - ' + i);
      }
      stmt.finalize();
    });

这不是创建加密数据库。我可以打开文件并查看其中的数据。

问题

我试图弄清楚这是否是我的语法的一个简单问题,或者当电子构建器在后台运行它时,它是不是很神奇,它正在重建 sqlite 并删除sqlcipher构建。

如何创建可在 MacOS 和 Windows 上运行的加密 sqlite 构建。

标签: electronsqlcipherelectron-buildernode-sqlite3

解决方案


我可以打开文件并查看其中的数据。

由于它不要求任何类型的密码,因此数据库创建肯定存在问题。在 Electron-builder 的自述文件中指出

为确保您的本地依赖项始终匹配电子版本,只需将脚本“postinstall”:“electron-builder install-app-deps”添加到您的 package.json。

将以下行放入您的 package.json 并再次重复安装过程,这为我解决了问题。

"postinstall": "install-app-deps",

此外,我创建了一个小型 Vue + Electron + Vuetify + SQLite(带有 Seqlize 和 Sqlcipher)入门套件,其中包含您需要的所有东西。生成加密数据库的源代码可以在src/renderer/models.js看一看。

https://github.com/rizalishan/vue-electron-starter


推荐阅读