# electron_better-sqlite3_test **Repository Path**: linhao_io/electron_better-sqlite3_test ## Basic Information - **Project Name**: electron_better-sqlite3_test - **Description**: electron连接sqlite3数据库测试 README 文档有详细教程 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 0 - **Created**: 2023-09-14 - **Last Updated**: 2023-10-11 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## electron 连接 sqlite3 数据库步骤及注意事项 + **准备工作:** ### 需要先准备 Python 环境 和 ** Visual Studio Build C++ ** 构建环境 ### 因为 sqlite3 无法直接使用 需要先进行编译后 才能使用 ### 具体安装方法百度 嫌麻烦可以重装一下 nodejs 在 nodejs 安装包内勾选构建C++环境选项 + **安装依赖,推荐使用 cnmp:** - nodejs 18.17 - electron 24.0.0 ** 必须开发环境 ** - electron-builder 24.6.4 | latest ** 必须开发环境 ** - electron-rebuild 3.2.9 | latest ** 必须开发环境 ** - better-sqlite3 latest ** 必须生产环境 ** + **其他需要的依赖**: - bindings - file-uri-to-path - 最新版本即可 主要是为了解决 sqlite3 生产环境找不到依赖报错 + **pacaage.json 中 ‘scripts’ 需要添加的:** ``` "rebuild": "electron-rebuild -f -w sqlite3", "postinstall": "electron-builder install-app-deps" ``` sqlite3 在 node 环境中需要先进行 C++ 编译,所以需要有 rebuild 命令 postinstall 则可以校验版本是否兼容 + **开发环境调试:** - 首先需要先对 sqlite 进行编译 执行: npm run rebuild - 编译成功后就可以在渲染进程中使用 sqlite3 (主进程我试了报错,就没往下进行) + **生产环境调试:** - 执行 npm run build 对 electron 进行打包 过程中可能会下载一个压缩包下不下来 可以手动去下载 - 下载地址 https://github.com/electron/electron/releases/download/v24.8.3/electron - 因为我用的 electron 版本是 24.0.0 所以会下载 24.8.3 的包 - 下载完之后把包放在 C:\Users\***\AppData\Local\electron\Cache 目录下即可 #### 因为 electron 打包之后 所有静态资源都会放在根目录 /resources/app.asar 下 我们是读取不到数据库文件的,所以我们需要通过代码去在根目录下创建数据库文件 #### 示例: ``` function createDatabaseAndInsertData() { const db = new sqlite3('db1.db'); // 创建表并插入数据 db.exec('CREATE TABLE IF NOT EXISTS sample (id INT, name TEXT)'); // 插入两行模拟数据 const insertStmt = db.prepare('INSERT INTO sample VALUES (?, ?)'); insertStmt.run(Date.now(), generateRandomString(6)); console.log('数据库和数据插入完成。'); data.value = db.prepare('SELECT * FROM sample').all() // 关闭数据库连接 db.close(); }``` #### 这段代码会在项目根目录下创建 db1.db 文件 后续可以对这个文件进行curd操作