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

相关推荐
e***09615 分钟前
SQL 中UPDATE 和 DELETE 语句的深入理解与应用
数据库·sql
程序员小白条1 小时前
你面试时吹过最大的牛是什么?
java·开发语言·数据库·阿里云·面试·职场和发展·毕设
老华带你飞2 小时前
社区养老保障|智慧养老|基于springboot+小程序社区养老保障系统设计与实现(源码+数据库+文档)
java·数据库·vue.js·spring boot·小程序·毕设·社区养老保障
Coding_Doggy2 小时前
链盾shieldchiain | 团队功能、邀请成员、权限修改、移除成员、SpringSecurity、RBAC权限控制
java·开发语言·数据库
凯子坚持 c2 小时前
不用复杂配置!本地 Chat2DB 秒变远程可用,跨网操作数据库就这么简单
数据库
q***65692 小时前
Windows环境下安装Redis并设置Redis开机自启
数据库·windows·redis
q***96582 小时前
Windows版Redis本地后台启动
数据库·windows·redis
q***81642 小时前
【Redis】centos7 systemctl 启动 Redis 失败
数据库·redis·缓存
q***09802 小时前
MySQL 常用 SQL 语句大全
数据库·sql·mysql