轻量级数据库Sqlite的使用
SqLite是什么?
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ǔ)文件。
為什么要用 SQLite?
-
不需要一個(gè)單獨(dú)的服務(wù)器進(jìn)程或操作的系統(tǒng)(無(wú)服務(wù)器的)。
-
SQLite 不需要配置,這意味著不需要安裝或管理。
-
一個(gè)完整的 SQLite 數(shù)據(jù)庫(kù)是存儲(chǔ)在一個(gè)單一的跨平臺(tái)的磁盤文件。
-
SQLite 是非常小的,是輕量級(jí)的,完全配置時(shí)小于 400KiB,省略可選功能配置時(shí)小于250KiB。
-
SQLite 是自給自足的,這意味著不需要任何外部的依賴。
-
SQLite 事務(wù)是完全兼容 ACID 的,允許從多個(gè)進(jìn)程或線程安全訪問(wèn)。
-
SQLite 支持 SQL92(SQL2)標(biāo)準(zhǔn)的大多數(shù)查詢語(yǔ)言的功能。
-
SQLite 使用 ANSI-C 編寫的,并提供了簡(jiǎn)單和易于使用的 API。
-
SQLite 可在 UNIX(Linux, Mac OS-X, Android, iOS)和 Windows(Win32, WinCE, WinRT)中運(yùn)行。
在Windows上安裝SQLite
-
請(qǐng)?jiān)L問(wèn)?SQLite 下載頁(yè)面,從 Windows 區(qū)下載預(yù)編譯的二進(jìn)制文件。
-
您需要下載?sqlite-tools-win32-*.zip?和?sqlite-dll-win32-*.zip?壓縮文件。
-
創(chuàng)建文件夾 F:\sqlite,并在此文件夾下解壓上面兩個(gè)壓縮文件,將得到 以上sqlite3.def、sqlite3.dll 和 sqlite3.exe 文件
-
-
添加 C:\sqlite 到 PATH 環(huán)境變量,最后在命令提示符下,使用?sqlite3?命令,將顯示如下結(jié)果
-
?如果出現(xiàn)以上結(jié)果,環(huán)境也就沒(méi)有什么問(wèn)題了,當(dāng)然我這里的環(huán)境變量是F盤必須要切到這里。
如需獲取可用的點(diǎn)命令的清單,可以在任何時(shí)候輸入 ".help"。例如:
sqlite>.help讓我們嘗試使用?.show?命令,來(lái)查看 SQLite 命令提示符的默認(rèn)設(shè)置。
sqlite>.showecho: offexplain: offheaders: offmode: column nullvalue: ""output: stdout separator: "|"width: sqlite>特別注意 鍵入這些命令的時(shí)候不要有空格,否則無(wú)法運(yùn)行
?在Sqlite中有一種概念叫做動(dòng)態(tài)數(shù)據(jù),即Sqlite使用者專業(yè)術(shù)語(yǔ)叫做親和數(shù)據(jù),也就是說(shuō),你傳入的數(shù)據(jù)和字段的格式不匹配會(huì)自動(dòng)進(jìn)行轉(zhuǎn)換,這里就不進(jìn)行列舉了??梢栽赟QLite官方查看,基本上和別的數(shù)據(jù)庫(kù)差距不大。
?創(chuàng)建數(shù)據(jù)庫(kù)
?命令:DbName.db;直接即可,有可能你會(huì)遇到的問(wèn)題如下:
創(chuàng)建數(shù)據(jù)庫(kù)時(shí)報(bào)錯(cuò):syntax error,這個(gè)錯(cuò)是因?yàn)槟銊?chuàng)建目錄里已經(jīng)有數(shù)據(jù)庫(kù)了,那你怎么能在數(shù)據(jù)庫(kù)里再創(chuàng)建數(shù)據(jù)庫(kù)呢,你可以直接在你的sqlite環(huán)境變量中目錄 創(chuàng)建一個(gè)文件夾 進(jìn)去之后 再直接該命令就沒(méi)事了。
如果你想查看該文件夾中有那些數(shù)據(jù)庫(kù)你可以通過(guò).databases命令來(lái)查看。
您可以使用 SQLite?.quit?命令退出 sqlite 提示符
?創(chuàng)建表
SQLite 的?CREATE TABLE?語(yǔ)句用于在任何給定的數(shù)據(jù)庫(kù)創(chuàng)建一個(gè)新表。創(chuàng)建基本表,涉及到命名表、定義列及每一列的數(shù)據(jù)類型。
刪除表
?語(yǔ)法如下:
DROP TABLE database_name.table_name;還有一些增刪改查的操作這里就不說(shuō)了,簡(jiǎn)單的創(chuàng)建庫(kù)和表就說(shuō)完了 我們?cè)诔绦蛑醒菔具M(jìn)行CRUD操作。
?在.NET Core中使用Sqlite數(shù)據(jù)庫(kù)
?新建一個(gè).net Core控制臺(tái)項(xiàng)目
二、在“程序包管理器控制臺(tái)”下輸入:
install-package Microsoft.EntityFrameworkCore.Sqlite.Core
install-package SQLitePCLRaw.bundle_green
三.編碼
using System; using Microsoft.Data.Sqlite; using System.Data;namespace ConsoApp {class Program{static void Main(string[] args){string connString = "Data Source=C:\\Users\\MACHENIKE\\Desktop\\Db\\demo.db";string insertsql = @"insert into company values('冀中能源',1);";string selectsql = "select * from company";try{using (SqliteConnection conn = new SqliteConnection(connString)){conn.Open();SqliteCommand cmd = new SqliteCommand(insertsql, conn);cmd.ExecuteNonQuery();cmd.CommandText = selectsql;SqliteDataReader dr = cmd.ExecuteReader();while (dr.Read()){Console.WriteLine("UserId:{0}\tUserName:{1}", dr[0], dr[1]);}}}catch(Exception ex){Console.WriteLine(ex.Message);}}} }
Dump命令
?現(xiàn)在我們的數(shù)據(jù)庫(kù)有一定的數(shù)據(jù)了,我們想要進(jìn)行備份,可以使用這個(gè)命令。
?
打開(kāi)之后內(nèi)容如下,就是我們剛才所操作的。
PRAGMA foreign_keys=OFF;
BEGIN TRANSACTION;
CREATE TABLE company(
name text not null
,id int primary key?
);
INSERT INTO company VALUES('1','冀中能源');
INSERT INTO company VALUES('冀中能源',1);
COMMIT;
那么當(dāng)你沒(méi)有數(shù)據(jù)庫(kù)了 只有了sql文件? 你可以再進(jìn)行回檔。
$sqlite3 testDB.db < testDB.sql免費(fèi)的Sqlite可視化工具
市面上有很多收費(fèi)的sqlite的可視化工具,還有免費(fèi)的,推薦這個(gè)??SQLiteExpert 個(gè)人免費(fèi) 要安裝? 地址:http://www.sqliteexpert.com/
功能非常強(qiáng)大,如果上述兩款不能滿足,就試試這個(gè)吧,當(dāng)然也可以自己試著做一個(gè),也沒(méi)有那么難。
轉(zhuǎn)載于:https://www.cnblogs.com/ZaraNet/p/10188893.html
總結(jié)
以上是生活随笔為你收集整理的轻量级数据库Sqlite的使用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 监控线程的3种方法
- 下一篇: 一个数据库存储架构的独白