当前位置:网站首页>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 .
边栏推荐
- STM32入门开发 NEC红外线协议解码(超低成本无线传输方案)
- Design intelligent weighing system based on Huawei cloud IOT (STM32)
- Debezium同步之Debezium架构详解
- 普通测试年薪15w,测试开发年薪30w+,二者差距在哪?
- 聊聊SOC启动(十) 内核启动先导知识
- Qt 实现容器的DELETE的方式
- Creative information was surveyed by 2 institutions: greatdb database has been deployed in 9 places
- Template initial level template
- 使用MeterSphere让你的测试工作持续高效
- Vuthink正确安装过程
猜你喜欢
关于SIoU《SIoU Loss: More Powerful Learning for Bounding Box Regression Zhora Gevorgyan 》的一些看法及代码实现
Socket socket programming
The opacity value becomes 1%
Force buckle 1002 Find common characters
PostgreSQL中的表复制
Learning notes | data Xiaobai uses dataease to make a large data screen
uniCloud
How to use cherry pick?
Basic knowledge of process (orphan, zombie process)
关于在云服务器上(这里用腾讯云)安装mysql8.0并使本地可以远程连接的方法
随机推荐
Hash / (understanding, implementation and application)
基于华为云IOT设计智能称重系统(STM32)
[untitled]
A case of compiling QT file qmake compiling script
Idea shortcut keys
uniapp 在onLaunch中跳转页面后,点击事件失效解决方法
Leetcode - interview question 17.24 maximum submatrix
audit 移植
自动化测试框架
electron添加SQLite数据库
Vuthink proper installation process
Go slice comparison
Case study of Jinshan API translation function based on retrofit framework
oracle常见锁表处理方式
[STM32] actual combat 3.1 - drive 42 stepper motors with STM32 and tb6600 drivers (I)
electron 添加 SQLite 数据库
There are ways to improve self-discipline and self-control
Verilog design responder [with source code]
Interprocess communication (IPC)
Rolling puddle Uni_ App (VIII)