最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Electron+vue3項(xiàng)目使用SQLite3數(shù)據(jù)庫(kù)詳細(xì)步驟(超詳細(xì))

 更新時(shí)間:2024年01月02日 10:48:14   作者:qq_31819445  
Electron是一個(gè)基于vue.js的新框架,它可以構(gòu)建桌面應(yīng)用,這篇文章主要給大家介紹了關(guān)于Electron+vue3項(xiàng)目使用SQLite3數(shù)據(jù)庫(kù)的詳細(xì)步驟,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下

前言

SQLite 是一個(gè)進(jìn)程內(nèi)的庫(kù),實(shí)現(xiàn)了自給自足的、無(wú)服務(wù)器的、零配置的、事務(wù)性的 SQL 數(shù)據(jù)庫(kù)引擎。它是一個(gè)零配置的數(shù)據(jù)庫(kù),這意味著與其他數(shù)據(jù)庫(kù)不一樣,我們不需要在系統(tǒng)中配置。

就像其他數(shù)據(jù)庫(kù),SQLite 引擎不是一個(gè)獨(dú)立的進(jìn)程,可以按應(yīng)用程序需求進(jìn)行靜態(tài)或動(dòng)態(tài)連接。SQLite 直接訪問(wèn)其存儲(chǔ)文件。

特性:

  • 不需要一個(gè)單獨(dú)的服務(wù)器進(jìn)程或操作的系統(tǒng);
  • 一個(gè)完整的 SQLite 數(shù)據(jù)庫(kù)是存儲(chǔ)在一個(gè)單一的跨平臺(tái)的磁盤文件中;
  • SQLite 是自給自足的,這意味著不需要任何外部的依賴;
  • SQLite 事務(wù)是完全兼容 ACID 的,允許從多個(gè)進(jìn)程或線程安全訪問(wèn)。

一、SQLite是什么

SQLite是一種嵌入式關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),是一個(gè)零配置、無(wú)服務(wù)器的、自給自足的、事務(wù)性的SQL數(shù)據(jù)庫(kù)引擎。SQLite是一個(gè)輕量級(jí)的數(shù)據(jù)庫(kù),可以在各種操作系統(tǒng)上使用,并且支持SQL語(yǔ)言標(biāo)準(zhǔn)。

二、SQLite可以做什么

SQLite可以用來(lái)存儲(chǔ)和管理大量的數(shù)據(jù),并且可以通過(guò)SQL語(yǔ)句來(lái)查詢和操作這些數(shù)據(jù)。它可以用于移動(dòng)應(yīng)用程序、桌面應(yīng)用程序、Web應(yīng)用程序、嵌入式系統(tǒng)等等。

三、安裝依賴

cnpm i sqlite3 --build-from-source

四、創(chuàng)建數(shù)據(jù)庫(kù)

在electron目錄下新建db文件夾,存放sqlite3db.js文件。

sqlite3db.js文件內(nèi)容如下:

//數(shù)據(jù)庫(kù)連接
 
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/text.db');
 
console.log('連接數(shù)據(jù)庫(kù)路徑:',app.getAppPath());
console.log('連接數(shù)據(jù)庫(kù)路徑:',DB_PATH);
 
// 判斷是否是正式環(huán)境
if (app.isPackaged) {
    // 正式環(huán)境
    DB_PATH = path.join(path.dirname(app.getPath('exe')), '/config/text.db');
}
 
//連接數(shù)據(jù)庫(kù)
function connectDatabase() {
    return new sqlite3.Database(DB_PATH, (err) => {
        if (err) {
            console.error('連接數(shù)據(jù)庫(kù)錯(cuò)誤:' + err.message);
        }
        console.log('連接數(shù)據(jù)庫(kù)成功')
    });
}
const db = connectDatabase();
 
//創(chuàng)建數(shù)據(jù)庫(kù),如果用戶本地沒(méi)有數(shù)據(jù)庫(kù)的話就創(chuàng)建否則跳過(guò)
function createDataTable() {
    //創(chuàng)建用戶表
    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;

/electron/main.js里面引入sqlite3db.js文件。

const { createDataTable } = require("./db/sqlite3db.js")

執(zhí)行

createDataTable();

完整/electron/main.js

const {
	app,
	net,
	ipcMain,
	BrowserWindow
} = require('electron')
const path = require("path");
const fs = require('fs');
const { checkUpdate } = require("./updater.js")

const { createDataTable } = require("./db/sqlite3db.js")

const createWindow = () => {
	const mainWindow = new BrowserWindow({
		frame: false, //false表示去掉頂部導(dǎo)航去掉關(guān)閉按鈕最大化最小化按鈕
		width: 1366,
		height: 768,
		maxWidth: 1920,
		minWidth: 1280,
		minHeight: 600,
		backgroundColor: '#333',
		transparent: false, //是否透明
		webPreferences: {
			// 允許使用webview
			webviewTag: true,
			// false關(guān)閉CORS,支持跨域請(qǐng)求
			webSecurity: false,
			// 開啟渲染進(jìn)程使用node,為了解決require 識(shí)別問(wèn)題
			nodeIntegration: true,
			// 是否在獨(dú)立 JavaScript 環(huán)境中運(yùn)行 Electron API和指定的preload 腳本.Electron 12 版本之后它將被默認(rèn)true
			contextIsolation: false,
			// 允許使用remote
			enableRemoteModule: true,
			// 子進(jìn)程路徑
			preload: path.join(__dirname, "./preload.js"),
		}
	})

	console.log("=====", path.join(__dirname, "./preload.js"));
	// 判斷是否是正式環(huán)境
	if (app.isPackaged) {
		// mainWindow.loadFile(`file://${path.join(__dirname, '../dist/index.html')}`); // 正式環(huán)境下加載html文件
		mainWindow.loadFile('dist/index.html')
		// mainWindow.webContents.openDevTools()
	} else {
		mainWindow.loadURL('http://127.0.0.1:3000/'); // dev環(huán)境下加載vite服務(wù)頁(yè)面
		mainWindow.webContents.openDevTools()
	}

	createDataTable();
}
app.whenReady().then(() => {
	createWindow()
	app.on('activate', () => {
		if (BrowserWindow.getAllWindows().length === 0) createWindow()
	})
})
app.on('window-all-closed', () => {
	if (process.platform !== 'darwin') {
		app.quit();
		mainWindow.close();
	}
})

五、啟動(dòng)腳本,創(chuàng)建數(shù)據(jù)庫(kù)

選擇生成的text.db文件,連接可視化工具

總結(jié)

到此這篇關(guān)于Electron+vue3項(xiàng)目使用SQLite3數(shù)據(jù)庫(kù)的文章就介紹到這了,更多相關(guān)Electron vue3使用SQLite3數(shù)據(jù)庫(kù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vue+node 實(shí)現(xiàn)視頻在線播放的實(shí)例代碼

    vue+node 實(shí)現(xiàn)視頻在線播放的實(shí)例代碼

    這篇文章主要介紹了vue+node 實(shí)現(xiàn)視頻在線播放的實(shí)例代碼,代碼簡(jiǎn)單易懂,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-10-10
  • vue緩存之keep-alive的理解和應(yīng)用詳解

    vue緩存之keep-alive的理解和應(yīng)用詳解

    這篇文章主要介紹了vue緩存之keep-alive的理解和應(yīng)用詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • Ant-design-vue Table組件customRow屬性的使用說(shuō)明

    Ant-design-vue Table組件customRow屬性的使用說(shuō)明

    這篇文章主要介紹了Ant-design-vue Table組件customRow屬性的使用說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-10-10
  • Vue3中父子組件之間相互通信的方式詳解

    Vue3中父子組件之間相互通信的方式詳解

    本文主要探討了 Vue 3 中父子組件之間的通信方式,包括父?jìng)髯?通過(guò)props傳遞數(shù)據(jù)和方法;子傳父,用emit觸發(fā)自定義事件并傳遞數(shù)據(jù);還介紹了使用ref直接操作子組件實(shí)例,借助defineExpose暴露子組件的屬性和方法給父組件,需要的朋友可以參考下
    2025-01-01
  • Vue的Flux框架之Vuex狀態(tài)管理器

    Vue的Flux框架之Vuex狀態(tài)管理器

    本文內(nèi)容主要參考官方教程,為了方便理解,用更加通俗的文字講解Vuex,也原文內(nèi)容做一些重點(diǎn)引用。希望會(huì)對(duì)你有所幫助。
    2017-07-07
  • vue 開發(fā)企業(yè)微信整合案例分析

    vue 開發(fā)企業(yè)微信整合案例分析

    這篇文章主要介紹了vue 開發(fā)企業(yè)微信整合,結(jié)合具體案例形式分析了vue.js使用企業(yè)微信JSSDK實(shí)現(xiàn)手機(jī)端程序可以和企業(yè)微信進(jìn)行整合功能的相關(guān)操作技巧,需要的朋友可以參考下
    2019-12-12
  • 關(guān)于vuex強(qiáng)刷數(shù)據(jù)丟失問(wèn)題解析

    關(guān)于vuex強(qiáng)刷數(shù)據(jù)丟失問(wèn)題解析

    這篇文章主要介紹了關(guān)于vuex強(qiáng)刷數(shù)據(jù)丟失問(wèn)題解析,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-04-04
  • 一文帶你了解Vue中單文件組件的使用

    一文帶你了解Vue中單文件組件的使用

    在web開發(fā)中,組件化開發(fā)已成為一種趨勢(shì),Vue提供了一種高效的方式來(lái)創(chuàng)建和管理這些組件—單文件組件,下面我們就來(lái)看看它的具體應(yīng)用吧
    2024-03-03
  • vue的keep-alive用法技巧

    vue的keep-alive用法技巧

    在本篇文章里小編給大家整理的是關(guān)于vue的keep-alive用法技巧以及實(shí)例代碼,需要的朋友們學(xué)習(xí)下。
    2019-08-08
  • Vue動(dòng)態(tài)控制input的disabled屬性的方法

    Vue動(dòng)態(tài)控制input的disabled屬性的方法

    這篇文章主要介紹了Vue動(dòng)態(tài)控制input的disabled屬性的方法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-06-06

最新評(píng)論

水富县| 湘阴县| 梧州市| 宜兴市| 德江县| 达孜县| 红原县| 大英县| 鞍山市| 探索| 兴业县| 措美县| 晋宁县| 华宁县| 南昌市| 巴林左旗| 抚宁县| 尖扎县| 油尖旺区| 大姚县| 红桥区| 当雄县| 方城县| 建湖县| 清丰县| 萨迦县| 报价| 高青县| 江城| 厦门市| 临武县| 承德县| 建宁县| 陆川县| 凌云县| 资源县| 通江县| 石嘴山市| 鸡泽县| 隆化县| 英吉沙县|