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

相关推荐
骇客野人4 小时前
mysql笛卡尔积怎么形成的怎么避免笛卡尔积
数据库·mysql
m0_564264185 小时前
IDEA DEBUG调试时如何获取 MyBatis-Plus 动态拼接的 SQL?
java·数据库·spring boot·sql·mybatis·debug·mybatis-plus
隐语SecretFlow6 小时前
隐语SecreFlow SCQL 1.0.0b1 发布:更完善的 SQL 支持与更高效的隐私查询引擎
数据库·sql
ttghgfhhjxkl6 小时前
文档搜索引擎搜索模块的索引更新策略:实时增量与全量重建设计
数据库·搜索引擎
老华带你飞6 小时前
机器人信息|基于Springboot的机器人门户展示系统设计与实现(源码+数据库+文档)
java·数据库·spring boot·机器人·论文·毕设·机器人门户展示系统
StarRocks_labs7 小时前
StarRocks 在 Cisco Webex 的探索与实践
数据库·starrocks·json·存算分离·olap 技术栈
notion20257 小时前
Adobe Lightroom Classic下载与安装教程(附安装包) 2025最新版详细图文安装教程
java·数据库·其他·adobe
楚枫默寒7 小时前
mongodb备份脚本(单机+副本集)
数据库
小蒜学长8 小时前
springboot酒店客房管理系统设计与实现(代码+数据库+LW)
java·数据库·spring boot·后端
准时准点睡觉9 小时前
window安装MYSQL5.5出错:a windows service with the name MYSQL alreadyexists....
数据库·windows·mysql