<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Electron操作SQLite數(shù)據(jù)庫(kù)

          共 5789字,需瀏覽 12分鐘

           ·

          2021-09-11 14:28

          目錄
          一、 背景 2
          二、 數(shù)據(jù)庫(kù)選型 2
          (一) LocalStorage 2
          (二) SessionStorage 2
          (三) WebSQL 2
          (四) Cookies 2
          (五) IndexedDB 3
          (六) SQLite 3
          三、 electron安裝SQLite3和環(huán)境配置 4
          (一) 安裝python環(huán)境 5
          (二) 構(gòu)建工具下載 5
          (三) 開(kāi)始安裝 5
          1. 方案一 5
          2. 方案二 7
          四、 SQLite可視化管理工具 7
          (一) SQLite studio 8
          (二) Sqlitespy 9
          (三) Navicat for SQLite 9
          五、 操作SQLite3數(shù)據(jù)庫(kù) 10
          六、 參考文獻(xiàn) 12

          一、 背景

          在我們開(kāi)發(fā)某款應(yīng)用程序的時(shí)候,可能會(huì)需要用到本地?cái)?shù)據(jù)庫(kù),而不是一直通過(guò) restful 接口,使用遠(yuǎn)程數(shù)據(jù)庫(kù)。所以我們?cè)趹?yīng)用中需要加入數(shù)據(jù)庫(kù),究其根本就是 electron 搭配數(shù)據(jù)庫(kù)。那么,數(shù)據(jù)庫(kù)要選擇哪個(gè)呢?

          二、 數(shù)據(jù)庫(kù)選型

          (一) LocalStorage

          LocalStorage 存儲(chǔ)的數(shù)據(jù)保存在瀏覽器中。存儲(chǔ)容量很小,大概不會(huì)超過(guò) 10M,它是以鍵值對(duì)形式保存數(shù)據(jù)的,沒(méi)有關(guān)聯(lián)查詢(xún)、條件查詢(xún)的機(jī)制。

          (二) SessionStorage

          SessionStorageLocalStorage 很相似,區(qū)別是每次關(guān)閉會(huì)話,其中的內(nèi)容會(huì)被清空。在窗口中打開(kāi)頁(yè)面會(huì)復(fù)制頂級(jí)瀏覽會(huì)話的上下文作為新會(huì)話的上下文。相同 url 的不同 tabs 頁(yè)面,其中的值是不同的。有過(guò)期時(shí)間設(shè)置,想持久化存儲(chǔ)數(shù)據(jù),它是做不到的。

          (三) WebSQL

          Web SQL 數(shù)據(jù)庫(kù) API 并不是 HTML5 規(guī)范的一部分,但是它是一個(gè)獨(dú)立的規(guī)范。WebSQL 是在瀏覽器上模擬數(shù)據(jù)庫(kù),使用 js 來(lái)操作 SQL 完成對(duì)數(shù)據(jù)的讀寫(xiě)。

          (四) Cookies

          Cookies 存儲(chǔ)容量太小,只能存 4kb 的內(nèi)容,而且每次與服務(wù)端交互,同域下的 Cookie 還會(huì)被攜帶到服務(wù)端,也沒(méi)有關(guān)聯(lián)查詢(xún)、條件查詢(xún)的機(jī)制。

          數(shù)據(jù)以 Json 格式保存在本地文件中,以這種方式存儲(chǔ)一些用戶(hù)的配置信息是完全沒(méi)問(wèn)題的。但要用這種方式存儲(chǔ)大量結(jié)構(gòu)化數(shù)據(jù),就很不合理了。主要原因是:用這種方案操作數(shù)據(jù)是需要把文件中的所有數(shù)據(jù)都加載到客戶(hù)端電腦的內(nèi)存中去的。由于沒(méi)有索引機(jī)制,關(guān)聯(lián)查詢(xún)、條件查詢(xún)等操作效率不高,更新了某項(xiàng)數(shù)據(jù)之后,要持久化更新操作,又要重寫(xiě)整個(gè)文件。

          (五) IndexedDB

          IndexedDB 是一種底層 API,用于在客戶(hù)端存儲(chǔ)大量的結(jié)構(gòu)化數(shù)據(jù)。該 API 使用索引實(shí)現(xiàn)對(duì)數(shù)據(jù)的高性能搜索。

          IndexedDB 是一個(gè)事務(wù)型數(shù)據(jù)庫(kù)系統(tǒng),類(lèi)似于基于 SQLRDBMS。然而,不像 RDBMS 使用固定列表,IndexedDB 是一個(gè)基于 js 的面向?qū)ο髷?shù)據(jù)庫(kù)。IndexedDB 可以存儲(chǔ)和檢索用鍵索引的對(duì)象。只需要指定數(shù)據(jù)庫(kù)模式,打開(kāi)與數(shù)據(jù)庫(kù)的連接,然后檢索和更新一系列事務(wù)。

          (六) SQLite

          官網(wǎng)地址:https://sqlite.org/index.html 。

          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ǔ)文件。

          特性:

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

          通過(guò)比較,我們選擇了 SQLite3 作為 electron 搭配的數(shù)據(jù)庫(kù)。SQLite3 的使用和 api 可以通過(guò)菜鳥(niǎo)教程進(jìn)行學(xué)習(xí) https://www.runoob.com/sqlite/sqlite-where-clause.html 。

          三、 electron安裝SQLite3和環(huán)境配置

          在應(yīng)用終端中下載依賴(lài)包:

          npm install sqlite3 –save-dev 

          啟動(dòng)應(yīng)用又提示我去安裝aws-sdk:

          npm install --save aws-sdk

          啟動(dòng)應(yīng)用又報(bào)如下錯(cuò)誤,真是多災(zāi)多難:

          直接下載

          看來(lái)安裝 SQLite 沒(méi)有這么簡(jiǎn)單,還是需要做一些準(zhǔn)備工作的。比如需要 python 環(huán)境(python2.7)和vsBuildTools構(gòu)建工具(Visual Studio 15生成工具2017)。

          前期準(zhǔn)備

          (一) 安裝python環(huán)境

          我的 python 版本:

          python版本

          下載地址:https://www.python.org/downloads 。下載并且安裝 python,將默認(rèn)沒(méi)有勾選的“加入系統(tǒng)變量path”的選項(xiàng)勾選上,配置好環(huán)境變量后,在終端里測(cè)試一下。

          (二) 構(gòu)建工具下載

          我安裝的是 Visual Studio 15生成工具2017

          Visual Studio 15生成工具2017

          還需要執(zhí)行

          npm install windows-build-tools –g

          安裝 windows-build-tools。

          (三) 開(kāi)始安裝

          1. 方案一

          cnpm install sqlite3@latest --build-from-source --runtime=electron --target=1.7.9 --dist-url=https://atom.io/download/electron --save

          不要使用 npm。否則報(bào)錯(cuò)如下:

          不要使用npm

          使用 cnpm 去安裝它。

          執(zhí)行命令開(kāi)始安裝最新版的 SQLite3。

          開(kāi)始安裝最新版的SQLite3

          其實(shí)這個(gè)過(guò)程中,會(huì)試圖下載 SQLite3 和我指定版本的 electronprebuild 版本,沒(méi)有發(fā)現(xiàn)的話。就會(huì)重新構(gòu)建一份合適的版本出來(lái)。

          2. 方案二

          執(zhí)行下面三條命令:

          npm install sqlite3 --save
          npm install electron-rebuild --save
          .\node_modules\.bin\electron-rebuild.cmd

          這兩個(gè)方案隨便選一條執(zhí)行,就能安裝成功。安裝成功后,就可以順利使用 SQLite

          四、 SQLite可視化管理工具

          生成的數(shù)據(jù)庫(kù)并不是雙擊就能打開(kāi)預(yù)覽數(shù)據(jù),所以就需要一款可視化管理工具。SQLite 的可視化管理工具,是做 SQLite 相關(guān)開(kāi)發(fā)的必備軟件。對(duì)于可視化管理工具,并不像 mysql 一樣,SQLite 可選擇的范圍并不多。

          (一) SQLite studio

          官網(wǎng)地址:https://sqlitestudio.pl/ ,提供下載。

          SQLiteStudio 是一款可以幫助用戶(hù)管理 SQLite 數(shù)據(jù)庫(kù)的工具。該 SQLiteStudio 數(shù)據(jù)庫(kù)管理工具具有功能完善的 SQLite2SQLite3 工具,視圖編碼支持 utf8,還可以同時(shí)打開(kāi)多個(gè)數(shù)據(jù)庫(kù)文件。

          sqlitestudio

          特點(diǎn):

          1. 功能完善的SQLite2和SQLite3工具;
          2. 視圖編碼支持utf8;
          3. 支持導(dǎo)出數(shù)據(jù)格式:csv、html、plain、sql、xml;
          4. 可同時(shí)打開(kāi)多個(gè)數(shù)據(jù)庫(kù)文件;
          5. 支持查看和編輯二進(jìn)制字段;
          6. 輕量級(jí),獨(dú)立性,沒(méi)有依賴(lài);
          7. 隔離性,全部在一個(gè)文件夾系統(tǒng);
          8. 跨平臺(tái),支持眾多操作系統(tǒng);
          9. 多語(yǔ)言接口 支持眾多編程語(yǔ)言;
          10. 安全性,通過(guò)獨(dú)占性和共享鎖來(lái)實(shí)現(xiàn)獨(dú)立事務(wù)的處理,多個(gè)進(jìn)程可以在同一個(gè)時(shí)間內(nèi)從同一個(gè)數(shù)據(jù)庫(kù)讀取數(shù)據(jù),但只有一個(gè)可以寫(xiě)入數(shù)據(jù);
          11. 支持?jǐn)?shù)據(jù)庫(kù)大小至2TB。

          (二) Sqlitespy

          下載地址:https://www.yunqa.de/delphi/products/sqlitespy/index 。

          SQLiteSpy 是一款針對(duì) SQLite3 數(shù)據(jù)庫(kù)進(jìn)行可視化管理的工具,不需要安裝,只需將該軟件提起到任何目錄和執(zhí)行文件就能立即開(kāi)始工作,軟件是一個(gè)獨(dú)立的管理工具,他不會(huì)與數(shù)據(jù)庫(kù)中的文件及程序產(chǎn)生沖突,操作起來(lái)非常方便。用戶(hù)只需懂基礎(chǔ)的 SQL 語(yǔ)句就可以輕松執(zhí)行 SQL 查詢(xún),視圖、復(fù)制和刪除表、編輯單元格,以及查看索引,觸發(fā)器和排序規(guī)則等操作,非常便捷。

          (三) Navicat for SQLite

          網(wǎng)站地址:https://www.navicat.com.cn/products/navicat-for-sqlite 。

          Navicat for SQLite 是一款強(qiáng)大而全面的 SQLite 圖形用戶(hù)界面,提供了一套完整的數(shù)據(jù)庫(kù)管理和開(kāi)發(fā)功能,并且支持優(yōu)化SQLite工作流程和生產(chǎn)力,通過(guò)它我們可以快速、安全地創(chuàng)建、組織、訪問(wèn)和共享信息。

          navicat-for-sqlite

          特點(diǎn):

          1. 數(shù)據(jù)傳輸和數(shù)據(jù)同步以低成本輕松快速地遷移數(shù)據(jù);
          2. 能將不同格式的數(shù)據(jù)傳輸?shù)綌?shù)據(jù)。表、視圖或查詢(xún)結(jié)果的數(shù)據(jù)可導(dǎo)出為 Excel、Access、CSV 等格式;
          3. 可視化 SQL 創(chuàng)建工具幫助我們創(chuàng)建、編輯和運(yùn)行 SQL 語(yǔ)句,而不必?fù)?dān)心語(yǔ)法和正確命令的用法。透過(guò)關(guān)鍵字建議和減少重復(fù)輸入相同的代碼,自動(dòng)完成代碼和自定義的代碼段功能可讓編碼更加快速。

          五、 操作SQLite3數(shù)據(jù)庫(kù)

          在項(xiàng)目中的 background 文件夾中創(chuàng)建 sqlite3db.js 文件,引入 SQLite3 并初始化數(shù)據(jù)庫(kù),然后新建一張表,最后插入數(shù)據(jù)。

          import sq3 from "sqlite3";
          const sqlite3 = sq3.verbose()
          const db = new sqlite3.Database('sq3.db')

          db.serialize(() => {
              db.run("create table test(name varchar(20))", () => {
                  db.run("insert into test values('nihao')", () => {
                      db.all("select * from test", (err, res) => {
                          if (err) throw err
                          console.log(JSON.stringify(res))
                      })
                  })
              })
          })
          export default db

          main.js 中導(dǎo)入并且使用

          import sqlite3db from './sqlite3db'
          // 數(shù)據(jù)庫(kù)
          app.sqlite3db = sqlite3db

          啟動(dòng)應(yīng)用,根目錄下生成數(shù)據(jù)庫(kù)。

          使用 sqlite studio 打開(kāi),添加數(shù)據(jù)庫(kù),查看導(dǎo)入的數(shù)據(jù)。

          添加數(shù)據(jù)庫(kù)

          選擇文件路徑,添加數(shù)據(jù)庫(kù)。

          選擇文件路徑

          選擇 test 表,切換到數(shù)據(jù),查看插入的值。

          導(dǎo)入成功

          導(dǎo)入成功。

          六、 參考文獻(xiàn)

          https://newsn.net/say/electron-install-sqlite3.html

          https://www.cnblogs.com/liulun/p/13061672.html

          - END -


          最后,希望大家一定要點(diǎn)贊三連。

          一個(gè)學(xué)習(xí)編程技術(shù)的公眾號(hào)。每周推送高質(zhì)量的優(yōu)秀博文、開(kāi)源項(xiàng)目、實(shí)用工具、面試技巧、編程學(xué)習(xí)資源等等。目標(biāo)是做到個(gè)人技術(shù)與公眾號(hào)一起成長(zhǎng)。歡迎大家關(guān)注,一起進(jìn)步,走向全棧大佬的修煉之路


          瀏覽 94
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  天天干在线观看 | 蜜臀久久精品久久久久消防站 | 日本免费A片 | 日本免费A | 一级啪啪片|