【electron3】electron将数据写入本地数据库

安装

复制代码
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要查资料省不少时间

学习资料:

csdn

书:《SQLite权威指南》
菜鸟教程

相关推荐
TDengine (老段)7 分钟前
益和热力性能优化实践:从 SQL Server 到 TDengine 时序数据库,写入快 20 秒、查询提速 5 倍
大数据·数据库·物联网·性能优化·时序数据库·tdengine·1024程序员节
ejinxian34 分钟前
Rust UI 框架GPUI 与 Electron 的对比
前端·javascript·electron
小马哥learn37 分钟前
Vue3 + Electron + Node.js 桌面项目完整开发指南
前端·javascript·electron
yolo_Yang40 分钟前
【MySQL】mysqldump使用方法
数据库·mysql·oracle
玩转测试开发1 小时前
xshell设置跳板机登录内网服务器
运维·服务器·数据库
涔溪1 小时前
在 Electron 框架中连接 OPC UA 服务器并读取 PLC 数据
服务器·javascript·electron
你不是我我1 小时前
【Java 开发日记】运行时有出现过什么异常?
数据库·oracle
夏玉林的学习之路2 小时前
正则表达式
数据库·c++·qt·mysql·正则表达式
JIngJaneIL2 小时前
财务管理|基于SprinBoot+vue的个人财务管理系统(源码+数据库+文档)
java·前端·数据库·vue.js·spring boot·毕设·财务管理系统
JIngJaneIL3 小时前
口腔健康系统|口腔医疗|基于java和小程序的口腔健康系统小程序设计与实现(源码+数据库+文档)
java·数据库·spring boot·小程序·论文·毕设·口腔医疗小程序