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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Linux学习】Linux指令(四)

文章标题 🚀zip/unzip指令:🚀tar指令(重要):🚀uname –r指令:🚀关机指令🚀几个常用操作 🚀zip/unzip指令: zip 与 unzip的安装 yum i…

Spring-dataSource事务案例分析-使用事务嵌套时,一个我们容易忽略的地方

场景如下: A_Bean 中的方法a()中调用B_Bean的b();方法都开启了事务,使用的默认的事务传递机制(即:属于同一事务); 如下两种场景会存在较大的差异: 在b()方法中出现了异常,在b()中进…

Android 原生功能与 Vue 交互实现

前端用 Android webview 嵌入 vue 地址,如何在vue 页面中显示 Android 版本号 一.要在vue页面中显示Android版本号 从Android中将该信息传递给Vue应用程序。可以通过使用WebView的Java Bridge来实现此目的。这里是一些可能有用的步骤: 在你的Android代…

数据库主从备份

1、简介 数据库运⾏时,⼀些因素可能会导致服务运⾏不正常,⽤户访问数据受阻。对于互联⽹公 司,尤其是购物⽹站⽽⾔,这种情况造成的损失是⽆法估量的。因此,对数据库进⾏“备份” 也是必不可少的操作。当主要的数据库死…

MediaStream使用webRtc多窗口传递

最近在做音视频通话,有个需求是把当前会话弄到另一个窗口单独展示,但是会话是属于主窗口的,多窗口通信目前不能直接传递对象,所以想着使用webRtc在主窗口和兄弟窗口建立连接,把主窗口建立会话得到的MediaStream传递给兄…

Unity之XR Interaction Toolkit如何在VR中实现渐变黑屏效果

前言 做VR的时候,有时会有跳转场景,切换位置,切换环境,切换进度等等需求,此时相机的画面如果不切换个黑屏,总会感觉很突兀。刚好Unity的XR Interaction Toolkit插件在2.5.x版本,出了一个TunnelingVignette的效果,我们今天就来分析一下他是如何使用的,然后我们自己再来…

MAC电脑M1安装OpenCV

最近在学习研究OpenCV,奈何只有mac电脑。安装OpenCV感觉还是挺麻烦的,所以记录一下,难免以后会忘记。 安装OpenCV我参考的帖子 https://www.bilibili.com/read/cv23613225/ 一、首先安装Anaconda 目前已安装不做赘述 二、启动命令窗口 方…

ArcGIS无法链接在线地图或错误: 代理服务器从远程服务器收到了错误地址(验证服务器是否正在运行)。

这几天我们分享了! 谷歌卫星影像图归来!ArcGIS直连!快来获取_谷歌影像lyr-CSDN博客文章浏览阅读666次,点赞11次,收藏9次。大概。_谷歌影像lyrhttps://blog.csdn.net/kinghxj/article/details/137521877一套图源搞定&a…

【办公类-22-04】20240418 UIBOT模拟上传每天两篇,获取流量券,并删除内容

背景需求: 前文制作了用UIBOT获取CSCN的3天、5天、7天、12天奖励流量券, 【办公类-22-03】20240417 UIBOT模拟上传获取流量券,并删除内容-CSDN博客文章浏览阅读253次,点赞6次,收藏3次。【办公类-22-03】20240417 UIB…

详解运算符重载,赋值运算符重载,++运算符重载

目录 前言 运算符重载 概念 目的 写法 调用 注意事项 详解注意事项 运算符重载成全局性的弊端 类中隐含的this指针 赋值运算符重载 赋值运算符重载格式 注意点 明晰赋值运算符重载函数的调用 连续赋值 传引用与传值返回 默认赋值运算符重载 前置和后置重载 前…

华为OD机试 - 分披萨 - 动态规划(Java 2024 C卷 200分)

华为OD机试 2024C卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试(JAVA)真题(A卷B卷C卷)》。 刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试…

抖去推短视频矩阵系统----源头开发

为什么一直说让企业去做短视频矩阵?而好处就是有更多的流量入口,不同平台或账号之间可以进行资源互换,最终目的就是获客留咨,提单转化。你去看一些做得大的账号,你会发现他们在许多大的平台上,都有自己的账…

HTML5 <video> 标签属性、API 方法、事件、自定义样式详解与实用示例

HTML5 <video> 标签为网页内嵌视频提供了强大且便捷的功能。以下是对 <video> 标签的主要属性、API 方法、事件、自定义样式及其使用示例的详细介绍&#xff1a; 一、属性 1. src 定义&#xff1a;指定视频文件的 URL。示例&#xff1a;<video src"my_v…

【C++杂货铺】继承

目录 &#x1f308;前言&#x1f308; &#x1f4c1; 继承的概念和定义 &#x1f4c2; 概念 &#x1f4c2; 定义 &#x1f4c1; 基类和派生类对象赋值转换 &#x1f4c1; 继承中的作用域 &#x1f4c1; 派生类的默认成员函数 构造函数 析构函数 拷贝构造函数 赋值重载…

利用vue3SeamlessScroll 简单实现列表的无限循环滚动

Vue3SeamlessScroll 该组件用于实现列表的无限循环滚动 1、安装 npm i vue3-seamless-scroll 2、导入及基本使用 <!--组件.vue--> <script setup>import { Vue3SeamlessScroll } from vue3-seamless-scroll;import {ref} from vue//vue3导入组件是不需要用com…

有公网IP,如何设置端口映射实现访问?

很多中小型公司或个人会根据自身需求自建服务器&#xff0c;或者将自己内网的服务、应用发布到外网&#xff0c;实现异地访问&#xff0c;如远程桌面、网站、数据库、公司的管理系统、FTP、管家婆、监控系统等等。 没接触过的人可能会觉得这个很难&#xff0c;实际上使用快解析…

Golang插件系统实现

插件可以在解耦的基础上灵活扩展应用功能&#xff0c;本文介绍了如何基于Golang标准库实现插件功能&#xff0c;帮助我们构建更灵活可扩展的应用。原文: Plugins with Go 什么是插件 简单来说&#xff0c;插件就是可以被其他软件加载的软件&#xff0c;通常用于扩展应用程序的功…

浅谈-“指针”

为什么要使用指针&#xff1f; 1.函数的值传递&#xff0c;无法通过调用函数&#xff0c;来修改函数的实参 2.被调用函数需要提供更多的“返回值”给调用函数 3.减少值传递时带来的额外开销&#xff0c;提高代码执行效率 ---> int a[10] > 40 字节 int *p; pa;…

Spring Boot 打印 Controller 返回的body数据

背景是获取Controller类输出的结果数据。 实现方案&#xff0c;使用RestControllerAdviceResponseBodyAdvice接口。不能使用Interceptor&#xff0c;在执行Interceptor时&#xff0c;response已经提交。也可以考虑aspect方案&#xff0c;不过实现麻烦些&#xff0c;增加较多的…

[入门]测试层级-ApiHug准备-测试篇-005

&#x1f917; ApiHug {Postman|Swagger|Api...} 快↑ 准√ 省↓ GitHub - apihug/apihug.com: All abou the Apihug apihug.com: 有爱&#xff0c;有温度&#xff0c;有质量&#xff0c;有信任ApiHug - API design Copilot - IntelliJ IDEs Plugin | Marketplace 这里的测…