【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权威指南》
菜鸟教程

相关推荐
JIngJaneIL2 小时前
就业|高校就业|基于ssm+vue的高校就业信息系统的设计与实现(源码+数据库+文档)
java·前端·数据库·vue.js·spring boot·毕设·高校就业
CXH7282 小时前
nginx-file-server
运维·数据库·nginx
一 乐2 小时前
社区互助|社区交易|基于springboot+vue的社区互助交易系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·后端·小区互助系统
q***57742 小时前
Spring Boot 实战:轻松实现文件上传与下载功能
java·数据库·spring boot
失散132 小时前
分布式专题——57 如何保证MySQL数据库到ES的数据一致性
java·数据库·分布式·mysql·elasticsearch·架构
YJlio2 小时前
进程和诊断工具速查手册(8.13):VMMap / DebugView / LiveKd / Handle / ListDLLs 一页式现场排障清单
数据库·笔记·学习
whn19773 小时前
达梦的dbms_lock在DSC中能用吗
数据库
未来之窗软件服务3 小时前
自建开发工具IDE(五)数据库预览——东方仙盟炼气期
数据库·ide·仙盟创梦ide·东方仙盟
1***Q7843 小时前
SQL Future
数据库·sql
hoiii1873 小时前
设置Redis在CentOS7上的自启动配置
数据库·redis·缓存