electron使用sqlite
在Electron中使用SQLite,你可以使用sqlite3
模块。以下是一个简单的例子,展示了如何在Electron的主进程和渲染进程中使用SQLite。
首先,安装sqlite3
模块:
npm install sqlite3
在Electron的主进程中,你可以这样使用sqlite3
:
const { app, BrowserWindow } = require('electron');
const sqlite3 = require('sqlite3').verbose();
let db = new sqlite3.Database('./mydatabase.sqlite3');
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
});
在Electron的渲染进程中,你可以使用sqlite3
与数据库交互,但需要注意的是,数据库操作应该通过IPC主进程和渲染进程之间的通信来进行,以避免阻塞UI线程。
const { ipcRenderer } = require('electron');
const sqlite3 = require('sqlite3').verbose();
let db = new sqlite3.Database('./mydatabase.sqlite3');
ipcRenderer.on('asynchronous-message', (event, arg) => {
console.log(arg); // prints "ping"
db.all("SELECT rowid AS id, info FROM lorem", (err, rows) => {
if (err) {
console.error(err.message);
}
ipcRenderer.send('asynchronous-reply', rows);
});
});
ipcRenderer.send('asynchronous-message', 'ping');
确保你的Electron应用程序有适当的文件系统访问权限来创建和操作SQLite数据库文件。
评论已关闭