最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

SQLite:輕量級(jí)嵌入式數(shù)據(jù)庫(kù)

2023-05-11 10:08 作者:BFT白芙堂機(jī)器人  | 我要投稿

原創(chuàng) | 文 BFT機(jī)器人

圖片


引言


SQLite是一個(gè)進(jìn)程內(nèi)的庫(kù),實(shí)現(xiàn)了自給自足的、無服務(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可以直接訪問其存儲(chǔ)文件。


SQLite占用資源少,非常適合在嵌入式設(shè)備里面,同時(shí)有很多種語言的接口,其中用SQLite最多的語言是C++。而C++在工業(yè)領(lǐng)域應(yīng)用廣泛,所以工業(yè)上的軟件設(shè)計(jì)基本上都是用SQLite這個(gè)數(shù)據(jù)庫(kù)。


在嵌入式系統(tǒng)、移動(dòng)應(yīng)用程序、桌面應(yīng)用程序和小型Web應(yīng)用程序中。它可以作為單用戶應(yīng)用程序的本地?cái)?shù)據(jù)庫(kù)存儲(chǔ)解決方案,或者作為客戶端-服務(wù)器架構(gòu)中的輕量級(jí)數(shù)據(jù)庫(kù)。


當(dāng)然數(shù)據(jù)庫(kù)作為一個(gè)數(shù)據(jù)的管理者,我們每次都運(yùn)行軟件來顯示數(shù)據(jù)庫(kù)的話會(huì)比較麻煩,所以我們通常用數(shù)據(jù)庫(kù)可視化工具來查看數(shù)據(jù)庫(kù),同時(shí)也是數(shù)據(jù)庫(kù)管理工具,這邊介紹一下Navicat Premium。


Navicat Premium作為一款數(shù)據(jù)庫(kù)管理工具,是一個(gè)可多重連線資料庫(kù)的管理工具,它可以讓你以單一程式同時(shí)連線到 MySQL、SQLite、及Oracle,讓管理不同類型的資料庫(kù)更加的方便。下圖是Navicat Premium里面顯示數(shù)據(jù)庫(kù)時(shí)的界面。


圖片


基本操作


定義一個(gè)SQLite數(shù)據(jù)庫(kù):QSqlDatabase DB_;//數(shù)據(jù)庫(kù)

定義一個(gè)SQLite數(shù)據(jù)模型:

QSqlTableModel* tabel_model; //數(shù)據(jù)模型(一張數(shù)據(jù)表)

創(chuàng)建一個(gè)數(shù)據(jù)表:

tabel_model = new QSqlTableModel(this, DB_);

設(shè)置數(shù)據(jù)表的名稱:

tabel_model ->setTable("teacher");

設(shè)置數(shù)據(jù)表的保存方式:

tabel_model ->setEditStrategy(QSqlTableModel::OnManualSubmit);

設(shè)置數(shù)據(jù)表的排序方式:

tabel_model ->setSort(tab_model_->fieldIndex("Date"), Qt::AscendingOrder);

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

QSqlQuery sqlQuery;

QString sql = "";

sql = "create table teacher(teacher_id integer primary key, teacher_name text , teacher_gender text, teacher_age integer)";

if(!sqlQuery.exec(sql))

{

qDebug()<<"創(chuàng)建teacher表失敗?。?#34;;

}

else

{

qDebug()<<"創(chuàng)建teacher表成功";

}

創(chuàng)建的表如下圖所示:


圖片


2、Qt中設(shè)置字段顯示名

tabel_model->setHeaderData(tab_model_->fieldIndex("teacher_id "), Qt::Horizontal, QString::fromLocal8Bit("ID"));

tabel_model->setHeaderData(tab_model_->fieldIndex("teacher_name"), Qt::Horizontal, QString::fromLocal8Bit("名字"));

tabel_model->setHeaderData(tab_model_->fieldIndex("teacher_gender"), Qt::Horizontal, QString::fromLocal8Bit("性別"));

tabel_model->setHeaderData(tab_model_->fieldIndex("teacher_age"), Qt::Horizontal, QString::fromLocal8Bit("年齡"));

3、給teacher表添加數(shù)據(jù)

tabel_model ->insertRow(tabel_model ->rowCount(), QModelIndex());

//在末尾添加一個(gè)記錄

curIndex = tabel_model ->index(tabel_model ->rowCount() - 1, 1);

//創(chuàng)建最后一行的ModelIndex

int currow = curIndex_.row();

//當(dāng)前行

tabel_model ->setData(teacher ->index(currow, 1),id);

//給currow行的第一列插入id

對(duì)于其他列的插入,可以用循環(huán)解決。


SQL (Structured Query Language:結(jié)構(gòu)化查詢語言)

是用于管理關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)(RDBMS)。SQL 的范圍包括數(shù)據(jù)插入、查詢、更新和刪除,數(shù)據(jù)庫(kù)模式創(chuàng)建和修改,以及數(shù)據(jù)訪問控制。


假定有一個(gè)表student,屬性有name,gender,age,hobby。


以下是SQL語句中增刪改查的介紹。

SELECT語法

SELECT column_name,column_name FROM table_name;

SELECT * FROM table_name;

查詢student 表中所有的數(shù)據(jù):select * from student;

SQL WHERE 語法

SELECT column_name,column_name FROM table_name WHERE column_name operator value;

查詢student表中所有女同學(xué):select * from student where gender=’女’;

INSERT語法

INSERT INTO table_name VALUES (value1,value2,value3,...);

給student表插入一組數(shù)據(jù):insert into student values(“小明”,’男’,18,”打籃球”);

UPDATE語法

UPDATE table_name SET column1=value1 WHERE some_column=some_value

將小明的愛好更新為打羽毛球:update student set hobby=“打羽毛球” where name=“小明”;

DELETE語法

DELETE FROM table_name WHERE some_column=some_value;

將小明這條記錄刪除:delete from student where name=”小明”;


特點(diǎn)優(yōu)勢(shì)


SQLite作為一種嵌入式關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),由D. Richard Hipp2000年設(shè)計(jì)和開發(fā)的,其設(shè)計(jì)目標(biāo)是提供一個(gè)輕量級(jí)的、自包含的數(shù)據(jù)庫(kù)引擎,可以在各種平臺(tái)上無縫運(yùn)行。主要有以下幾個(gè)特點(diǎn):


  • 嵌入式數(shù)據(jù)庫(kù):SQLite以靜態(tài)庫(kù)的形式提供,可以直接嵌入到應(yīng)用程序中,而不需要獨(dú)立的數(shù)據(jù)庫(kù)服務(wù)器進(jìn)程。這使得SQLite在資源有限的環(huán)境中使用非常方便,而且沒有獨(dú)立的服務(wù)器管理開銷。


  • 輕量級(jí):SQLite的核心引擎非常小巧,代碼庫(kù)輕量且高效。這使得SQLite成為適用于嵌入式系統(tǒng)和移動(dòng)設(shè)備的理想選擇。

  • 零配置:使用SQLite數(shù)據(jù)庫(kù)不需要任何繁瑣的配置或管理任務(wù)。創(chuàng)建數(shù)據(jù)庫(kù)文件后,即可立即開始使用。

  • 交易支持:SQLite支持完整的ACID事務(wù)屬性(原子性、一致性、隔離性和持久性),可以確保數(shù)據(jù)的完整性和一致性。

  • 支持多種編程語言:SQLite可以通過C/C++、Java、Python、PHP等多種編程語言進(jìn)行訪問和操作。

  • 跨平臺(tái):SQLite是跨平臺(tái)的,可以在各種操作系統(tǒng)(如Windows、Linux、macOS等)上運(yùn)行,并且與主流編程語言的綁定庫(kù)相容性良好。

  • 高性能:盡管SQLite的設(shè)計(jì)目標(biāo)是輕量級(jí),但它具備相當(dāng)高的性能。SQLite的查詢執(zhí)行速度快,適用于許多中小型應(yīng)用程序。

  • 支持豐富的SQL功能:SQLite支持標(biāo)準(zhǔn)的SQL查詢語句,包括復(fù)雜的查詢、子查詢、內(nèi)連接、外連接、聚合函數(shù)等。


應(yīng)用領(lǐng)域


SQLite在生活中的應(yīng)用隨處可見,如Mozilla Firefox瀏覽器使用SQLite作為其內(nèi)部的存儲(chǔ)引擎,用于管理書簽、歷史記錄、擴(kuò)展和其他瀏覽器數(shù)據(jù)。Adobe的一些軟件,如Lightroom和Photoshop Elements,使用SQLite來管理和存儲(chǔ)照片庫(kù)、目錄結(jié)構(gòu)、元數(shù)據(jù)和其他相關(guān)信息。


許多聊天應(yīng)用程序,包括WhatsApp、Telegram和Signal,使用SQLite來存儲(chǔ)聊天記錄、聯(lián)系人信息、設(shè)置等。操作系統(tǒng),如iOS和Android,使用SQLite來管理系統(tǒng)的各種配置、用戶數(shù)據(jù)、日志等。


物聯(lián)網(wǎng)設(shè)備通常需要一種輕量級(jí)的數(shù)據(jù)庫(kù)來存儲(chǔ)和查詢傳感器數(shù)據(jù)、設(shè)備狀態(tài)等。SQLite在這方面得到廣泛應(yīng)用,用于物聯(lián)網(wǎng)設(shè)備的數(shù)據(jù)存儲(chǔ)和處理。GPS導(dǎo)航應(yīng)用程序使用SQLite來存儲(chǔ)地圖數(shù)據(jù)、路線信息、興趣點(diǎn)等,以實(shí)現(xiàn)離線導(dǎo)航功能。


很多數(shù)據(jù)收集應(yīng)用和移動(dòng)應(yīng)用,如調(diào)查應(yīng)用、實(shí)時(shí)數(shù)據(jù)收集應(yīng)用等,使用SQLite來存儲(chǔ)和管理收集的數(shù)據(jù),以供離線使用或后續(xù)分析。總體而言其應(yīng)用范圍主要分為以下幾大類:


  • 移動(dòng)應(yīng)用程序:許多移動(dòng)應(yīng)用程序使用SQLite作為本地存儲(chǔ)解決方案,用于存儲(chǔ)用戶數(shù)據(jù)、設(shè)置信息、離線數(shù)據(jù)等。例如,iOS和Android平臺(tái)的應(yīng)用程序可以使用SQLite來管理本地?cái)?shù)據(jù)存儲(chǔ)。

  • 桌面應(yīng)用程序:SQLite可以用于桌面應(yīng)用程序中的本地?cái)?shù)據(jù)存儲(chǔ),例如日歷應(yīng)用、筆記應(yīng)用、個(gè)人管理工具等。許多常見的桌面應(yīng)用程序使用SQLite來管理和存儲(chǔ)數(shù)據(jù)。

  • 嵌入式系統(tǒng):SQLite的輕量級(jí)和嵌入式特性使其在嵌入式系統(tǒng)中得到廣泛應(yīng)用。它可以用于智能家居設(shè)備、物聯(lián)網(wǎng)設(shè)備、嵌入式傳感器等,提供數(shù)據(jù)存儲(chǔ)和查詢功能。

  • 小型Web應(yīng)用程序:對(duì)于小型的Web應(yīng)用程序,特別是個(gè)人博客、靜態(tài)網(wǎng)站等,SQLite可以作為輕量級(jí)的數(shù)據(jù)庫(kù)解決方案。它可以用于存儲(chǔ)文章、評(píng)論、用戶數(shù)據(jù)等。

  • 測(cè)試和原型開發(fā):SQLite的簡(jiǎn)單性和易用性使其成為開發(fā)人員在測(cè)試和原型開發(fā)階段使用的理想數(shù)據(jù)庫(kù)。它可以快速搭建原型,并進(jìn)行數(shù)據(jù)存儲(chǔ)和查詢操作。

  • 數(shù)據(jù)分析和報(bào)告SQLite可以用于小規(guī)模的數(shù)據(jù)分析和報(bào)告任務(wù)。分析人員可以使用SQLite來存儲(chǔ)和查詢數(shù)據(jù),執(zhí)行簡(jiǎn)單的SQL查詢,進(jìn)行數(shù)據(jù)篩選、聚合和分析。


比較差異


SQLite與其他常見的數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS)相比,在架構(gòu)上,SQLite是一種嵌入式數(shù)據(jù)庫(kù),將數(shù)據(jù)庫(kù)引擎直接嵌入到應(yīng)用程序中,而不需要獨(dú)立的服務(wù)器進(jìn)程。相比之下,傳統(tǒng)的DBMS如MySQL、PostgreSQL和Oracle需要獨(dú)立的服務(wù)器和客戶端連接。


存儲(chǔ)方式上,SQLite以文件形式存儲(chǔ)整個(gè)數(shù)據(jù)庫(kù),而其他DBMS使用更復(fù)雜的存儲(chǔ)結(jié)構(gòu),如表空間、數(shù)據(jù)文件和日志文件。這使得SQLite在管理和備份數(shù)據(jù)庫(kù)方面更加簡(jiǎn)單和直觀。用戶上,SQLite是單用戶數(shù)據(jù)庫(kù),只能由一個(gè)進(jìn)程或線程訪問。


其他DBMS通常支持多用戶并發(fā)訪問,具備更復(fù)雜的鎖定和并發(fā)控制機(jī)制。相比于其他成熟的DBMS,SQLite在功能上可能相對(duì)較小。它不支持某些高級(jí)功能,如復(fù)雜的存儲(chǔ)過程、觸發(fā)器、外鍵約束等。


SQLite更注重簡(jiǎn)潔性和輕量級(jí)特性,適用于小型和嵌入式應(yīng)用。又由于SQLite是一個(gè)本地?cái)?shù)據(jù)庫(kù)引擎,直接與應(yīng)用程序交互,無需網(wǎng)絡(luò)通信和客戶端-服務(wù)器開銷,因此在某些場(chǎng)景下具有較高的性能表現(xiàn)。


然而,在高并發(fā)和大規(guī)模數(shù)據(jù)處理方面,其他DBMS可能更具優(yōu)勢(shì)。依據(jù)SQLite的嵌入式特性,部署和維護(hù)也非常簡(jiǎn)單。只需將SQLite庫(kù)文件包含在應(yīng)用程序中即可,無需獨(dú)立的數(shù)據(jù)庫(kù)安裝和配置。


總體而言,SQLite適用于那些對(duì)數(shù)據(jù)庫(kù)需求相對(duì)較小,或需要在資源受限環(huán)境中使用的應(yīng)用程序。它提供了簡(jiǎn)單、快速、輕量級(jí)的數(shù)據(jù)庫(kù)解決方案,特別適用于嵌入式系統(tǒng)、移動(dòng)應(yīng)用和小型應(yīng)用程序。對(duì)于需要更高級(jí)功能和復(fù)雜性的大型應(yīng)用,傳統(tǒng)的DBMS可能更具優(yōu)勢(shì)。


結(jié)語


SQLite是一種流行的嵌入式數(shù)據(jù)庫(kù)管理系統(tǒng),以其輕量級(jí)設(shè)計(jì)和高效性能在各個(gè)應(yīng)用領(lǐng)域廣泛應(yīng)用。作為嵌入式數(shù)據(jù)庫(kù),SQLite的優(yōu)勢(shì)在于其簡(jiǎn)化的部署過程和資源節(jié)省,使其成為小型和嵌入式應(yīng)用的理想選擇。


通過零配置和跨平臺(tái)兼容性,SQLite提供了簡(jiǎn)化的管理和開發(fā)體驗(yàn),并且可以在不同的操作系統(tǒng)和編程語言上使用。其核心功能包括數(shù)據(jù)庫(kù)創(chuàng)建與連接、SQL查詢與數(shù)據(jù)操作、事務(wù)支持與ACID屬性、數(shù)據(jù)類型與索引,以及數(shù)據(jù)庫(kù)文件和寫時(shí)復(fù)制(WAL)機(jī)制。


與傳統(tǒng)數(shù)據(jù)庫(kù)管理系統(tǒng)相比,SQLite的特點(diǎn)和優(yōu)勢(shì)在于其嵌入式特性、輕量級(jí)設(shè)計(jì)、簡(jiǎn)化管理和跨平臺(tái)兼容性,同時(shí)提供高性能和可靠性。無論是移動(dòng)應(yīng)用程序、桌面應(yīng)用程序、嵌入式系統(tǒng)、小型Web應(yīng)用程序還是數(shù)據(jù)分析和報(bào)告,SQLite都是一個(gè)強(qiáng)大而靈活的數(shù)據(jù)庫(kù)解決方案。



更多精彩內(nèi)容請(qǐng)關(guān)注公眾號(hào):BFT機(jī)器人

本文為原創(chuàng)文章,版權(quán)歸BFT機(jī)器人所有,如需轉(zhuǎn)載請(qǐng)與我們聯(lián)系。若您對(duì)該文章內(nèi)容有任何疑問,請(qǐng)與我們聯(lián)系,將及時(shí)回應(yīng)。

SQLite:輕量級(jí)嵌入式數(shù)據(jù)庫(kù)的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
磴口县| 吉隆县| 襄樊市| 湖南省| 兰溪市| 星座| 板桥市| 温泉县| 手机| 阳城县| 治多县| 临桂县| 漳浦县| 扎囊县| 茂名市| 灌阳县| 平乐县| 丹寨县| 肇庆市| 子洲县| 包头市| 淮安市| 南陵县| 桦甸市| 临海市| 桐城市| 舒城县| 南汇区| 灌云县| 慈溪市| 稷山县| 油尖旺区| 河间市| 清徐县| 台山市| 东安县| 惠安县| 双江| 天水市| 大姚县| 远安县|