当前位置:网站首页>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.db
Databases can have an impact on packaging , It leads to errors , It turns out there's no problem .
边栏推荐
- 从色情直播到直播电商
- PostgreSQL中的表复制
- 2021-04-23
- Design intelligent weighing system based on Huawei cloud IOT (STM32)
- After the uniapp jumps to the page in onlaunch, click the event failure solution
- verilog设计抢答器【附源码】
- QT document
- [untitled]
- 0.96 inch IIC LCD driver based on stc8g1k08
- There are ways to improve self-discipline and self-control
猜你喜欢
Array object sorting
[STM32] actual combat 3.1 - drive 42 stepper motors with STM32 and tb6600 drivers (I)
使用MeterSphere让你的测试工作持续高效
Socket socket programming
[untitled]
从色情直播到直播电商
Shardingsphere sub database and table examples (logical table, real table, binding table, broadcast table, single table)
從色情直播到直播電商
Web端自动化测试失败的原因
The concept, implementation and analysis of binary search tree (BST)
随机推荐
Antd select selector drop-down box follows the scroll bar to scroll through the solution
PostgreSQL中的表复制
從色情直播到直播電商
90后,辞职创业,说要卷死云数据库
0.96 inch IIC LCD driver based on stc8g1k08
基于STC8G1K08的0.96寸IIC液晶屏驱动程序
基于Retrofit框架的金山API翻译功能案例
STM32入门开发 编写DS18B20温度传感器驱动(读取环境温度、支持级联)
Mpx 插件
LeetCode - 面试题17.24 最大子矩阵
[untitled]
JSON format query of MySQL
Template initial level template
Creative information was surveyed by 2 institutions: greatdb database has been deployed in 9 places
VIM命令模式与输入模式切换
The concept, implementation and analysis of binary search tree (BST)
Table replication in PostgreSQL
QT document
Audit migration
Basic knowledge of process (orphan, zombie process)