Electron 使用 SQLite

· 约 17 分钟读完 · 第 25 / 37 章

安装 SQLite3

在 Electron 应用中使用 SQLite,首先需要安装 sqlite3。这是一个 Node.js 的模块,用于与 SQLite 数据库进行交互。在项目根目录下打开终端并运行以下命令来安装:

这将把 sqlite3 添加到项目的 package.json 文件中,并安装到 node_modules 目录下。

创建数据库连接

在 Electron 应用中,我们通常在主进程或渲染进程中创建一个数据库连接。这里我们以主进程为例进行说明。在主进程中,我们可以创建一个名为 db.js 的文件,用于封装数据库连接逻辑。

上述代码中,我们定义了两个函数:openDB 和 closeDB。openDB 函数负责创建数据库连接,而 closeDB 函数则负责关闭数据库连接。此外,我们还通过 module.exports 将这两个函数导出,以便其他文件可以导入它们。

创建数据库表

接下来,我们需要创建一个数据库表来存储数据。这里我们创建一个名为 users 的表,用于存储用户信息。我们可以在 main.js 文件中的 app.on('ready') 事件处理程序中调用创建表的函数。

在上述代码中,我们定义了一个 createTable 函数,该函数在调用 openDB 函数后执行 SQL 语句来创建 users 表。如果表已经存在,则不会重新创建。最后,我们通过调用 closeDB 函数关闭数据库连接。

插入数据

现在我们已经创建了一个数据库表,接下来我们将向其中插入一些数据。我们可以在渲染进程中实现这个功能,也可以在主进程中实现。这里我们以渲染进程为例进行说明。

在渲染进程中,我们可以使用 ipcRenderer 模块向主进程发送消息,从而触发主进程中的插入操作。首先,我们需要在渲染进程中引入 ipcRenderer 模块,并监听按钮点击事件。

在上述代码中,我们为按钮添加了一个点击事件监听器。当用户点击按钮时,会弹出两个提示框让用户输入姓名和邮箱,然后通过 ipcRenderer.send 方法向主进程发送一条消息,消息类型为 insert-data,消息内容为用户输入的姓名和邮箱。

在主进程中,我们需要监听 insert-data 消息,并执行相应的插入操作。我们可以在 main.js 文件中添加以下代码:

在上述代码中,我们定义了一个 insertData 函数,该函数接受两个参数:name 和 email,然后执行 SQL 语句向 users 表中插入一行数据。最后,我们通过 ipcMain.on 方法监听 insert-data 消息,并调用 insertData 函数来插入数据。

查询数据

在渲染进程中,我们可以通过 ipcRenderer 模块向主进程发送消息,从而触发主进程中的查询操作。我们可以在渲染进程中添加一个按钮,当用户点击该按钮时,向主进程发送查询请求。

在上述代码中,我们为按钮添加了一个点击事件监听器。当用户点击按钮时,通过 ipcRenderer.send 方法向主进程发送一条消息,消息类型为 query-data。我们还通过 ipcRenderer.on 方法监听 query-result 消息,并根据接收到的数据更新页面上的结果显示。

在主进程中,我们需要监听 query-data 消息,并执行相应的查询操作。我们可以在 main.js 文件中添加以下代码:

在上述代码中,我们定义了一个 queryData 函数,该函数接受一个回调函数作为参数。该函数首先打开数据库连接,然后执行 SQL 语句查询 users 表中的所有行数据,并将结果保存在一个数组中。最后,我们通过调用 callback 回调函数并将结果传递给它来返回查询结果。

在 query-data 消息处理程序中,我们调用了 queryData 函数,并通过 mainWindow.webContents.send 方法向渲染进程发送查询结果。

更新数据

在渲染进程中,我们可以通过 ipcRenderer 模块向主进程发送消息,从而触发主进程中的更新操作。我们可以在渲染进程中添加一个按钮,当用户点击该按钮时,向主进程发送更新请求。

在上述代码中,我们为按钮添加了一个点击事件监听器。当用户点击按钮时,会弹出三个提示框让用户输入要更新的记录ID、新的姓名和新的邮箱,然后通过 ipcRenderer.send 方法向主进程发送一条消息,消息类型为 update-data,消息内容为用户输入的ID、姓名和邮箱。

在主进程中,我们需要监听 update-data 消息,并执行相应的更新操作。我们可以在 main.js 文件中添加以下代码:

在上述代码中,我们定义了一个 updateData 函数,该函数接受三个参数:id、name 和 email,然后执行 SQL 语句更新 users 表中指定ID的记录。最后,我们通过 ipcMain.on 方法监听 update-data 消息,并调用 updateData 函数来更新数据。

删除数据

在渲染进程中,我们可以通过 ipcRenderer 模块向主进程发送消息,从而触发主进程中的删除操作。我们可以在渲染进程中添加一个按钮,当用户点击该按钮时,向主进程发送删除请求。

在上述代码中,我们为按钮添加了一个点击事件监听器。当用户点击按钮时,会弹出一个提示框让用户输入要删除的记录ID,然后通过 ipcRenderer.send 方法向主进程发送一条消息,消息类型为 delete-data,消息内容为用户输入的ID。

在主进程中,我们需要监听 delete-data 消息,并执行相应的删除操作。我们可以在 main.js 文件中添加以下代码:

在上述代码中,我们定义了一个 deleteData 函数,该函数接受一个参数:id,然后执行 SQL 语句删除 users 表中指定ID的记录。最后,我们通过 ipcMain.on 方法监听 delete-data 消息,并调用 deleteData 函数来删除数据。

以上就是 Electron 应用中使用 SQLite 的详细步骤。通过这些步骤,你可以轻松地在 Electron 应用中集成 SQLite 数据库,并完成数据的增删改查操作。