当前位置:网站首页>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 .
边栏推荐
- 关于在云服务器上(这里用腾讯云)安装mysql8.0并使本地可以远程连接的方法
- uniCloud
- MIF file format record
- JS add spaces to the string
- PR Lecture Notes
- Add a self incrementing sequence number to the antd table component
- Android 面试知识点
- 聊聊SOC启动(六)uboot启动流程二
- 测试开发基础,教你做一个完整功能的Web平台之环境准备
- How to remove addition and subtraction from inputnumber input box
猜你喜欢
如何在博客中添加Aplayer音乐播放器
使用MeterSphere让你的测试工作持续高效
Drive HC based on de2115 development board_ SR04 ultrasonic ranging module [source code attached]
Leetcode - interview question 17.24 maximum submatrix
Verilog design responder [with source code]
2021-04-08
2021-05-21
关于在云服务器上(这里用腾讯云)安装mysql8.0并使本地可以远程连接的方法
MPX plug-in
Unsupervised learning of visual features by contracting cluster assignments
随机推荐
使用MeterSphere让你的测试工作持续高效
[untitled]
Vuthink proper installation process
聊聊SOC启动(十) 内核启动先导知识
关于测试人生的一站式发展建议
There are ways to improve self-discipline and self-control
创意信息获2家机构调研:GreatDB 数据库已在9地部署
oracle常见锁表处理方式
About the application of writing shell script JSON in JMeter
How to remove addition and subtraction from inputnumber input box
Unsupervised learning of visual features by contracting cluster assignments
MIF file format record
[pyqt] the cellwidget in tablewidget uses signal and slot mechanism
网络协议 概念
Cmake learning manual
vim 的各种用法,很实用哦,都是本人是在工作中学习和总结的
Qt|多个窗口共有一个提示框类
Kitex 重试机制
QT document
How to use cherry pick?