安装
yarn add sqlite3 --save
连接并调用数据库,创建表
createDB.ts文件内容
const sqlite3 = require('sqlite3')
const NODE_ENV = process.env.NODE_ENV
const path = require('path')
const { app } = require('electron')
let DB_PATH = path.join(app.getAppPath(), '/electron/sql/数据库名.db');
console.log(DB_PATH, app.getAppPath(), 'DB_PATH')
if (NODE_ENV !== 'development') {
// exe window
DB_PATH = path.join(path.dirname(app.getPath('exe')), '/electron/sql/数据库名.db');
}
/**
* @Description: 连接数据库
* @CreationDate 2023-05-10 13:48:41
*/
function connectDatabase() {
return new sqlite3.Database(DB_PATH, (err: any) => {
if (err) {
console.error('--------------------connectDatabaseErr' + err.message);
}
console.log('👉👉👉-----------------sqlite3已经连接成功')
});
}
// 调用连接数据库
const db = connectDatabase();
/**
* @Description: 创建数据库,如果用户本地没有数据库的话就创建否则跳过
* @CreationDate 2023-05-10 13:44:48
*/
function createDataTable() {
/**
* @Description: 创建用户表
* @CreationDate 2023-06-01 22:53:23
*/
db.serialize(function() {
// db.run('create table if not exists user (id INTEGER PRIMARY KEY AUTOINCREMENT, name text, email text, phone text);');
db.run("create table if not exists test(name varchar(20))", () => {
db.run("insert into test values('nihao')", () => {
db.all("select * from test", (err: any, res: any) => {
if (err) throw err
console.log(JSON.stringify(res))
})
})
})
});
// db.close();
}
exports.connectDatabase = connectDatabase;
exports.createDataTable = createDataTable;
exports.db = db;
在electron main.ts(主进程的主窗口文件)中的调用:
// 引入
const { createDataTable } = require('./db/createDB');
createTray(mainWindow)
目前使用的db属性有
基于我个人使用的理解,如有问题请指出
serialize 持续要运行的内部命令
run 运行某条数据
all 获取查找到的所有数据,返回[]
get 获取某条符合条件的数据,返回{}
操作数据库表命令
创建表
create table if not exists 表名(字段名,字段名,...)
说明:
if not exists : 如何没有这个表就会进行创建
查询某张表是否存在
SELECT sql FROM sqlite_master WHERE type = 'table' AND tbl_name = '表名'
增加一条数据
insert into 表名 values('字段1','字段2',...)
修改某条数据的字段
update 表名 set 字段名='字段' where 字段名1='字段'
说明:
set 设置要更新的数据
where 符合条件的字段
查某条数据
select * from 表名 where 字段名='字段'
where 为条件
持续更新中。。。。
注:我后来发现一个更好用的better-sqlite3这个插件,github上介绍的很详细,比用sqlite3要查资料省不少时间
学习资料:
书:《SQLite权威指南》
菜鸟教程