第四章 Electron|Node 使用SQLite3数据库

一、SQLite是什么 👇 👇 👇

SQLite是一种嵌入式关系型数据库管理系统,是一个零配置、无服务器的、自给自足的、事务性的SQL数据库引擎。SQLite是一个轻量级的数据库,可以在各种操作系统上使用,并且支持SQL语言标准。

二、SQLite可以做什么 👇 👇 👇

SQLite可以用来存储和管理大量的数据,并且可以通过SQL语句来查询和操作这些数据。它可以用于移动应用程序、桌面应用程序、Web应用程序、嵌入式系统等等。

三、为什么使用它 👇 👇 👇

轻量级:SQLite非常小巧,不需要额外的服务器或运行时环境,只需一个库文件即可。

高性能:SQLite是非常快速的,因为它是一个本地库,可以直接读写磁盘文件。

可移植性:SQLite可以在多种操作系统上运行,包括Windows、Linux、macOS等等。

安全性:SQLite支持数据加密和用户身份验证等安全特性。

易于使用:SQLite的API简单易用,可以通过多种编程语言进行访问。

四、安装依赖 👇 👇 👇

安装依赖的话记得要把项目停掉

我当前的node版本号

yarn add sqlite3 --build-from-source

# 如果执行上面的语句没有安装成功再执行下面的试试
# 如果都失败,多尝试几次就好

yarn add sqlite3 --ignore-scripts

我安装的sqlite3版本

五、创建数据库👇 👇 👇

1、编写数据启动脚本👇 👇 👇

新建文件electron/db/database.ts,在electron下创建db文件夹,随后在其文件夹下创建database.ts。里面我通过开发环境来判断应该存放的位置。因为我们项目打包以后和开发的文件夹路径是不一样的。示例中数据库的名字叫Etc.End,以.db为后缀。名字根据自己的需求调整。

/**
 * @Description: 数据库连接
 * @Author: Etc.End
 * @CreationDate 2023-06-01 22:53:59
 */

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(), '/config/Etc.End.db');
if (NODE_ENV !== 'development') {
    DB_PATH = path.join(path.dirname(app.getPath('exe')), '/config/Etc.End.db');
}
/**
 * @Description: 连接数据库
 * @CreationDate 2023-05-10 13:48:41
 */
function connectDatabase() {
    return new sqlite3.Database(DB_PATH, (err) => {
        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.close();
}

exports.connectDatabase = connectDatabase;
exports.createDataTable = createDataTable;
exports.db = db;

2、启动脚本,创建数据库👇 👇 👇

接着在electron文件夹下的main.ts中调用createDataTable方法,编写完成以后启动程序。

启动以后控制台会输出👉👉👉-----------------sqlite3已经连接成功并且创建config文件夹以及Etc.End.db文件。

如上图一样执行成功以后我们可以通过navcat工具进行数据库的访问。

到这里我们的数据库以及表就已经创建完成了。

六、操作表👇 👇 👇

操作表的话就是拼接我们的sql,非常的简单。

const { db } = require('./database.ts')

// 查询
function query() {
    return new Promise((resolve, reject) => {
        db.all('SELECT * FROM user', (err, rows) => {
            if (err) {
                reject(err);
            } else {
                resolve(rows);
            }
        });
    });
}

// 新增
function add(data) {
    return new Promise((resolve, reject) => {
        db.run(
            `INSERT INTO user(name, email, phone) VALUES('${data.name}', '${data.email}', '${data.phone}')`,
            function (err) {
                if (err) {
                    reject(err);
                } else {
                    resolve(this.lastID);
                }
            }
        );
    });
}

我是Etc.End。如果文章对你有所帮助,能否帮我点个免费的赞和收藏😍。

 👇 👇 👇 👇 👇 👇 👇 👇 👇 👇 👇 👇

  • 7
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 9
    评论
好的,下面是一个使用 Vite、TypeScript 和 ElectronSQLite3 示例项目。 首先,需要安装以下依赖: - vite - electron - electron-builder(可选,用于将应用程序打包成可执行文件) - sqlite3 - @types/sqlite3(TypeScript 定义文件) 可以使用以下命令进行安装: ``` npm install vite electron electron-builder sqlite3 @types/sqlite3 --save-dev ``` 接下来,创建一个 Vite 项目: ``` npx vite create my-app --template electron-ts ``` 然后,在项目根目录下创建一个 `db` 目录,用于存放 SQLite3 数据库文件。 接着,创建一个 `database.ts` 文件,用于连接 SQLite3 数据库: ```typescript import sqlite3 from 'sqlite3'; const DB_PATH = './db/my-db.db'; export function connectDatabase() { return new sqlite3.Database(DB_PATH, (err) => { if (err) { console.error(err.message); } console.log('Connected to the database.'); }); } ``` 这个文件中,我们首先定义了 SQLite3 数据库文件的路径 `DB_PATH`,然后导出了一个 `connectDatabase` 函数,用于连接到数据库。 接下来,我们可以创建一个 `users.ts` 文件,用于操作用户表: ```typescript import { connectDatabase } from './database'; const db = connectDatabase(); export interface User { id: number; name: string; email: string; } export function getAllUsers(): Promise<User[]> { return new Promise((resolve, reject) => { db.all('SELECT * FROM users', (err, rows) => { if (err) { reject(err); } else { resolve(rows); } }); }); } export function addUser(user: User): Promise<number> { return new Promise((resolve, reject) => { db.run( 'INSERT INTO users(name, email) VALUES(?, ?)', [user.name, user.email], function (err) { if (err) { reject(err); } else { resolve(this.lastID); } } ); }); } ``` 在这个文件中,我们首先导入了 `connectDatabase` 函数,并使用它连接到了数据库。然后,我们定义了一个 `User` 接口,用于表示用户的数据结构。 接着,我们导出了两个函数: - `getAllUsers`:用于获取所有用户记录。 - `addUser`:用于添加一条新的用户记录。 这两个函数都是返回 Promise 对象的,因为它们都是需要异步执行的操作。 最后,我们可以在 `renderer.ts` 文件中调用这些函数: ```typescript import { getAllUsers, addUser, User } from './users'; const userList = document.querySelector('#user-list')!; const nameInput = document.querySelector('#name-input') as HTMLInputElement; const emailInput = document.querySelector('#email-input') as HTMLInputElement; const addBtn = document.querySelector('#add-btn')!; async function loadUsers() { const users = await getAllUsers(); userList.innerHTML = ''; users.forEach((user) => { const li = document.createElement('li'); li.textContent = `${user.id} - ${user.name} (${user.email})`; userList.appendChild(li); }); } addBtn.addEventListener('click', async () => { const user: User = { id: 0, name: nameInput.value, email: emailInput.value, }; await addUser(user); await loadUsers(); }); loadUsers(); ``` 在这个文件中,我们首先导入了 `getAllUsers` 和 `addUser` 函数,以及 `User` 接口。 然后,我们使用 DOM API 获取了一些元素,包括用户列表、姓名输入框、邮箱输入框和添加按钮。 接着,我们定义了一个 `loadUsers` 函数,用于加载所有用户记录,并将它们显示在用户列表中。 最后,我们在添加按钮的点击事件处理程序中,获取了用户输入的姓名和邮箱,创建了一个新的用户对象,并调用了 `addUser` 函数将其添加到数据库中。然后,我们又调用了 `loadUsers` 函数重新加载用户列表。 现在,可以使用以下命令启动应用程序: ``` npm run dev ``` 这将同时启动 Vite 和 Electron,打开应用程序窗口。 在窗口中,可以输入用户的姓名和邮箱,点击添加按钮,然后应该会在用户列表中看到新添加的用户记录。 最后,如果想要将应用程序打包成可执行文件,可以使用以下命令: ``` npm run build ``` 这将使用 Electron Builder 将应用程序打包成可执行文件,并输出到 `dist` 目录中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Etc.End

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值