【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 为条件

持续更新中。。。。

学习资料:

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/554367.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

LDF、DBC、BIN、HEX、S19、BLF、asc、csv、ARXML、slx等(未完待续)

文章目录 如题如题 LDF是LIN报文格式文件,把这个直接拖到软件里面,可以发报文和接收报文 DBC是CAN报文格式文件,把这个直接拖到软件里面,可以发报文和接收报文 BIN文件烧录在BOOT里面(stm32),有人喜欢叫固件,这个固件就是bin文件,bin文件比hex文件体积小 其实BOOT也…

Android apk包使用360加固工具的加固步骤

1,准备好已经签名打包的apk包。 2,在360加固官方网站下载加固exe软件。三六零天御-企业移动应用安全一站式服务平台 3,步骤一,添加加固包,进行加固,并输出加固包: 4,步骤二&#…

预算不足千元SSL证书该怎么选?

随着互联网安全概念日渐深入人心,越来越多的企业或个人为自己的网站加装SSL证书;那对于个人或者小小微企业,预算不足千元的情况下该怎么选择SSL证书呢?可以从以下几个方面进行考量,以确保在有限的预算内获得满足基本安…

Linux编辑器-vim的使用

vim的基本概念 vim的三种模式(其实有好多模式,目前掌握这3种即可),分别是命令模式(command mode)、插 入模式(Insert mode)和底行模式(last line mode),各模式的功能区分如下&#…

苹果开发初学者指南:Xcode 如何为运行的 App 添加环境变量(Environmental Variable)

概览 Xcode 15 在运行 SwiftUI 代码时突然报告如下警告: Error: this application, or a library it uses, has passed an invalid numeric value (NaN, or not-a-number) to CoreGraphics API and this value is being ignored. Please fix this problem. 不仅如此…

李沐45_SSD实现——自学笔记

主体思路: 1.生成一堆锚框 2.根据真实标签为每个锚框打标(类别、偏移、mask) 3.模型为每个锚框做一个预测(类别、偏移) 4.计算上述二者的差异损失,以更新模型weights 先读取一张图像。 它的高度和宽度分别为561和728像素。 %matplotlib inline import …

NVM下载、NVM配置、NVM常用命令

NVM(nodejs版本管理切换工具)下载、配置、常用命令 0、NVM常用命令 nvm off // 禁用node.js版本管理(不卸载任何东西) nvm on // 启用node.js版本管理 nvm install <version> // 安装node.js的命名 version是版本号 例…

良友:献上今天(打开心窗说亮话)- 沟通篇

目录 一 二 三 四 五 六 七 八 九 十 十一 十二 十三

【Python小游戏】植物大战僵尸的实现与源码分享

文章目录 Python版植物大战僵尸环境要求方法源码分享初始化页面&#xff08;部分&#xff09;地图搭建&#xff08;部分&#xff09;定义植物类 &#xff08;部分&#xff09;定义僵尸类&#xff08;部分&#xff09;游戏运行入口 游戏源码获取 Python版植物大战僵尸 已有的植…

vscode调试文件(C++,ROS和cmake文件)

VsCode调试文件 参考文档&#xff1a; code.visualstudio.com/docs/editor/variables-reference code.visualstudio.com/docs/editor/tasks 主要修改task.json下的"args"、launch.json中的"program",“args” 注意task.json中的label以及launch.json中…

OpenCV 学习笔记2 C++

1.图像直方图 直方图&#xff08;Histogram&#xff09;是图像处理中常用的工具&#xff0c;它表示图像中每个像素强度值的分布情况。在OpenCV中&#xff0c;可以使用 cv::calcHist 函数来计算图像的直方图。 图像直方图是一种展示图像像素强度分布的统计图表。它显示了图像中…

市场份额第一!博睿数据持续领跑中国APM市场

近日&#xff0c;全球领先的IT市场研究和咨询公司IDC发布《中国IT统一运维软件产品市场跟踪报告&#xff0c;2023H2》。报告显示&#xff0c;2023下半年博睿数据以 17.6%的市场份额蝉联 APM(应用性能监控)市场第一。2023年全年博睿数据以18.8%的市场份额持续领跑中国APM市场。 …

实现联系人前后端界面,实现分页查询04.15

实现联系人前后端界面&#xff0c;实现分页查询项目包-CSDN博客 项目结构 数据库中建立两个表&#xff1a; 完整的后端目录 建立联系人People表&#xff0c;分组Type表&#xff0c;实现对应实体类 根据需求在mapper中写对应的sql语句 查询所有&#xff0c;删除&#xff0c;添…

网工交换基础——Access、Trunk、Hybrid处理VLAN的过程

一、VLAN帧格式&#xff1a; 通过Tag区分不同VLAN。打tag/剥离tag都有交换机接口进行。 1.接收方向&#xff1a;不会进行tag的剥离/弹出&#xff08;永远不会剥离VLAN Tag&#xff09;。 2.交换机内部&#xff1a;处理的都是带Tag的数据帧。 交换机开机&#xff0c;默认生成树…

振弦式土压力计性能评估指南

振弦式土压力计是一种常用的岩土工程监测仪器&#xff0c;主要用于测量土体中各点的土压力变化。在长期的监测过程中&#xff0c;保持土压力计的性能稳定与准确至关重要。因此&#xff0c;定期检查和确定振弦式土压力计的性能是否正常成为了一项必要的工作。本文将详细介绍如何…

PHP-extract变量覆盖

[题目信息]&#xff1a; 题目名称题目难度PHP-extract变量覆盖1 [题目考点]&#xff1a; 变量覆盖指的是用我们自定义的参数值替换程序原有的变量值&#xff0c;一般变量覆盖漏洞需要结合程序的其它功能来实现完整的攻击。 经常导致变量覆盖漏洞场景有&#xff1a;$$&#x…

【智能算法】花朵授粉算法(FPA)原理及实现

目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.结果展示4.参考文献 1.背景 2012年&#xff0c;Yang等人受到自然界花朵授粉过程启发&#xff0c;提出了鸭群算法&#xff08;Flower Pollination Algorithm, FPA&#xff09;。 2.算法原理 2.1算法思想 FPA基于自然界花朵授…

Git 指令

一.常见命令 1.1 初始化仓库 #初始化仓库 git init #查看隐藏文件 ll -a #查看隐藏文件.git结构 tree .git/1.2 创建/删除用户信息 #创建用户信息 git config user.email "151859163.com" git config user.name "zsl" #查看 git config -l #删除用户信息…

水电预付费远程管理

1.概述&#xff1a;水电预付费远程管理的定义与重要性 水电预付费远程管理系统是一种先进的能源管理模式&#xff0c;它允许用户在使用水电资源前预先支付费用&#xff0c;并通过远程技术进行实时监控和管理。这种系统不仅提高了效率&#xff0c;减少了欠费风险&#xff0c;也…

【缓存常见问题】

在使用缓存时特别是在高并发场景下会遇到很多问题&#xff0c;常用的问题有缓存穿透、缓存击穿、缓存雪崩以及缓存一致性问题。 1、缓存穿透 首先&#xff0c;什么是缓存穿透呢&#xff1f; 缓存穿透是指请求一个不存在的数据&#xff0c;缓存层和数据库层都没有这个数据&…