安装 SQLite3
在 Electron 应用中使用 SQLite,首先需要安装 sqlite3
。这是一个 Node.js 的模块,用于与 SQLite 数据库进行交互。在项目根目录下打开终端并运行以下命令来安装:
npm install sqlite3 --save
这将把 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
模块向主进程发送消息,从而触发主进程中的删除操作。我们可以在渲染进程中添加一个按钮,当用户点击该按钮时,向主进程发送删除请求。
-- -------------------- ---- ------- ---- ---------- --- --------- ----- ----- ---------- ------ ----- ---------------- --------------- -------------- ------- ------ ------- ------------------------- ------- ----------------------------- ------- -------
// renderer.js const { ipcRenderer } = require('electron'); document.getElementById('delete').addEventListener('click', () => { const id = prompt('请输入要删除的记录ID:'); ipcRenderer.send('delete-data', id); });
在上述代码中,我们为按钮添加了一个点击事件监听器。当用户点击按钮时,会弹出一个提示框让用户输入要删除的记录ID,然后通过 ipcRenderer.send
方法向主进程发送一条消息,消息类型为 delete-data
,消息内容为用户输入的ID。
在主进程中,我们需要监听 delete-data
消息,并执行相应的删除操作。我们可以在 main.js
文件中添加以下代码:
-- -------------------- ---- ------- -- ------- ----- - ---- ------------- - - -------------------- ----- - ------- ------- - - ---------------- -------- ------------- - -- --- - --------------- -- -- - -------------- -- --- --- --------------------------- -- -- - -- ----------------- --- --------- - ----------- - --- ------------------ -- -- - -- ------------------------------------- --- -- - --------------- - --- -------- ---------------- ------ - -- --- - -------- ------------------- - -- --- - -------- -------------- ----- ------ - -- --- - -------- -------------- - --------- -------------- ---- ----- ----- -- - --- ----- ------------- - -- ----- - --------------------------- - ---- - -------------------- --- ---- --- -------- - --- ---------- - ------------------------- ------- --- -- - --------------- ---
在上述代码中,我们定义了一个 deleteData
函数,该函数接受一个参数:id
,然后执行 SQL 语句删除 users
表中指定ID的记录。最后,我们通过 ipcMain.on
方法监听 delete-data
消息,并调用 deleteData
函数来删除数据。
以上就是 Electron 应用中使用 SQLite 的详细步骤。通过这些步骤,你可以轻松地在 Electron 应用中集成 SQLite 数据库,并完成数据的增删改查操作。