当前位置:网站首页>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 .
边栏推荐
猜你喜欢
Ping tool ICMP message learning
uniCloud
Wallhaven wallpaper desktop version
[STM32] actual combat 3.1 - drive 42 stepper motors with STM32 and tb6600 drivers (I)
Web端自动化测试失败的原因
关于jmeter中编写shell脚本json的应用
[untitled]
Verilog realizes nixie tube display driver [with source code]
Electron adding SQLite database
【C#】WinForm运行缩放(变糊)的解决方法
随机推荐
对比学习之 Unsupervised Learning of Visual Features by Contrasting Cluster Assignments
Shardingsphere sub database and table examples (logical table, real table, binding table, broadcast table, single table)
uniapp 在onLaunch中跳轉頁面後,點擊事件失效解决方法
90后,辞职创业,说要卷死云数据库
VIM命令模式与输入模式切换
基于STC8G1K08的0.96寸IIC液晶屏驱动程序
在我有限的软件测试经历里,一段专职的自动化测试经验总结
RationalDMIS2022 高级编程宏程序
從色情直播到直播電商
‘module‘ object is not callable错误
Creative information was surveyed by 2 institutions: greatdb database has been deployed in 9 places
mif 文件格式记录
Multithreaded application (thread pool, singleton mode)
分布式数据库主从配置(MySQL)
JS array delete the specified element
vim 的各种用法,很实用哦,都是本人是在工作中学习和总结的
QT implements the delete method of the container
Qt|多个窗口共有一个提示框类
【愚公系列】2022年7月 Go教学课程 005-变量
verilog设计抢答器【附源码】