当前位置:网站首页>Electron adding SQLite database
Electron adding SQLite database
2022-07-07 11:22:00 【Hua Weiyun】
order
Before , I used to use electron Developed a tomato clock application , But at that time, the application data was stored in JSON The file of , adopt node Of fs File system for reading and writing , But I don't think it's very professional to use the database .
So I plan to use the database as the storage place , However, there are many choices for databases , But I looked around and found it suitable for electron The packaged database may still be SQLite Well .
It was also intended to use mongodb, But it must be downloaded , So direct pass. And then because SQLite There is no need to deploy or server , direct node You can create and operate , So come straight on

Previous post :
Development
Because I have written the tomato clock project before , And separate the reading and writing of data , So now create a new one sqliteDB.js As a method file for operating the database .
In fact, the operation here basically refers to the above 《node の SQLite》 that will do . adopt sqlite The statement to create a database table first converts the database tomato.db created , Then create the table tomatoTable.
Create a table :(sqlite in Boolean Properties will be stored as 0/1)
runSQL(` create table tomatoTable ( name text not null, creatTime text not null, duringTime int not null, startFlag boolean not null, bgSrc text not null, taskEndCount int not null, taskId text not null );`) Then the previous main process and the renderer process pass through ipcMain and ipcRenderer To get data , This also remains the same , But take the data from JSON Getting from a file becomes getting from sqlite Get... In the database .
As for how to get the database , Because I only need to get all the data at once , have access to db.all, So the data is displayed in the callback method , Can pass promise To return data , Outside through await To wait for reception .
// Query tomato clock data function getTomatoData() { db = new sqlite3.Database(rootPath); return new Promise((reslove)=>{ db.all('select * from tomatoTable', (err, data)=>{ reslove(data); }); })}
Then you can receive the object directly during the rendering process , There is no need to pass JSON.parse Convert a string to an object

Because the tomato clock application does not need to add or delete multiple pieces of data at once , Therefore, the operation of adding, deleting and modifying is relatively simple :
// Insert new data into the tomato clock function insertNewInfo(d) { let insertInfo = db.prepare('insert into tomatoTable (name, creatTime, duringTime, startFlag, bgSrc, taskEndCount, taskId) values (?, ?, ?, ?, ?, ?, ?)') insertInfo.run(d.name, d.creatTime, d.duringTime, d.startFlag, d.bgSrc, d.taskEndCount, d.taskId ); insertInfo.finalize();}// Delete data from tomato clock function deleteNewInfo(taskId) { let del = db.prepare("delete from tomatoTable where taskId = ? "); del.run(taskId); del.finalize();}// Modify tomato clock task completion times function updateTaskEndCount(arg) { let update = db.prepare('update tomatoTable set taskEndCount = ? where taskId = ?'); update.run(arg.taskEndCount, arg.taskId); update.finalize();}Add a new piece of data in the tomato clock interface , And then you can go through vscode Of sqlite The plug-in first checks whether it exists :
-- SQLiteselect * from tomatoTable
It is almost over when I write this , And then you repackage the tomato clock , The way and 《vue Tomato clock &electron pack 》 equally .
I thought there was one more here
tomato.dbDatabases can have an impact on packaging , It leads to errors , It turns out there's no problem .
边栏推荐
猜你喜欢

关于在云服务器上(这里用腾讯云)安装mysql8.0并使本地可以远程连接的方法

Apprentissage comparatif non supervisé des caractéristiques visuelles par les assignations de groupes de contrôle

Table replication in PostgreSQL

解决VSCode只能开两个标签页的问题

Basic knowledge of process (orphan, zombie process)

2021-05-21

关于jmeter中编写shell脚本json的应用

對比學習之 Unsupervised Learning of Visual Features by Contrasting Cluster Assignments

聊聊SOC启动(十) 内核启动先导知识

Shardingsphere sub database and table examples (logical table, real table, binding table, broadcast table, single table)
随机推荐
2021-04-08
QT implements the delete method of the container
Vuthink正确安装过程
2021-04-23
聊聊SOC启动(七) uboot启动流程三
[untitled]
PR Lecture Notes
The eighth training assignment
面试被问到了解哪些开发模型?看这一篇就够了
Socket socket programming
STM32入门开发 采用IIC硬件时序读写AT24C08(EEPROM)
互联网协议
Use metersphere to keep your testing work efficient
[untitled]
Vuthink proper installation process
Using ENSP to do MPLS pseudo wire test
Verilog design responder [with source code]
JSON format query of MySQL
verilog设计抢答器【附源码】
Force buckle 1002 Find common characters