在Electron应用中使用SQLite3数据库,你需要在主进程和渲染进程中安装并使用sqlite3
模块。以下是如何在Electron中使用SQLite3的简化示例:
- 安装
sqlite3
模块:
npm install sqlite3
- 在主进程中使用
sqlite3
:
// main.js
const { app, BrowserWindow } = require('electron');
const sqlite3 = require('sqlite3').verbose();
let db = new sqlite3.Database('./data/sqlite.db');
db.serialize(() => {
db.run("CREATE TABLE IF NOT EXISTS lorem (info TEXT)");
const insertStmt = db.prepare("INSERT INTO lorem VALUES (?)");
for (let i = 0; i < 10; i++) {
insertStmt.run("Ipsum " + i);
}
insertStmt.finalize();
db.each("SELECT rowid AS id, info FROM lorem", (err, row) => {
console.log(row.id + ": " + row.info);
});
});
db.close((err) => {
if (err) {
console.error(err.message);
}
console.log('Close the database connection.');
});
app.on('window-all-closed', () => {
// On macOS, it is common for applications and their menu bar
// to stay active until the user quits explicitly with Cmd + Q
if (process.platform !== 'darwin') {
app.quit();
}
});
app.on('ready', () => {
// Create a new window
});
- 在渲染进程中使用
sqlite3
:
// renderer.js
const sqlite3 = require('sqlite3').verbose();
const path = require('path');
let db = new sqlite3.Database(path.resolve(__dirname, '../../data/sqlite.db'));
db.serialize(() => {
db.run("CREATE TABLE IF NOT EXISTS lorem (info TEXT)");
const insertStmt = db.prepare("INSERT INTO lorem VALUES (?)");
for (let i = 0; i < 10; i++) {
insertStmt.run("Ipsum " + i);
}
insertStmt.finalize();
db.each("SELECT rowid AS id, info FROM lorem", (err, row) => {
console.log(row.id + ": " + row.info);
});
});
db.close((err) => {
if (err) {
console.error(err.message);
}
console.log('Close the database connection.');
});
确保你的Electron应用有一个合适的目录结构,其中包含data
文件夹和sqlite.db
数据库文件。在渲染进程和主进程中使用path
模块来获取正确的数据库文件路径。
注意:在实际生产环境中,你需要处理异常和资源管理,例如正确关闭数据库连接等。上述代码示例为了简洁性而省略了这些操作。