SqLite是什么?
SQLite是一個進程內的庫,實現了自給自足的、無服務器的、零配置的、事務性的 SQL 數據庫引擎。它是一個零配置的數據庫,這意味着與其他數據庫一樣,您不需要在系統中配置。
就像其他數據庫,SQLite 引擎不是一個獨立的進程,可以按應用程序需求進行靜態或動態連接。SQLite 直接訪問其存儲文件。
為什么要用 SQLite?
-
不需要一個單獨的服務器進程或操作的系統(無服務器的)。
-
SQLite 不需要配置,這意味着不需要安裝或管理。
-
一個完整的 SQLite 數據庫是存儲在一個單一的跨平台的磁盤文件。
-
SQLite 是非常小的,是輕量級的,完全配置時小於 400KiB,省略可選功能配置時小於250KiB。
-
SQLite 是自給自足的,這意味着不需要任何外部的依賴。
-
SQLite 事務是完全兼容 ACID 的,允許從多個進程或線程安全訪問。
-
SQLite 支持 SQL92(SQL2)標准的大多數查詢語言的功能。
-
SQLite 使用 ANSI-C 編寫的,並提供了簡單和易於使用的 API。
-
SQLite 可在 UNIX(Linux, Mac OS-X, Android, iOS)和 Windows(Win32, WinCE, WinRT)中運行。
在Windows上安裝SQLite
-
請訪問 SQLite 下載頁面,從 Windows 區下載預編譯的二進制文件。
-
您需要下載 sqlite-tools-win32-*.zip 和 sqlite-dll-win32-*.zip 壓縮文件。
-
創建文件夾 F:\sqlite,並在此文件夾下解壓上面兩個壓縮文件,將得到 以上sqlite3.def、sqlite3.dll 和 sqlite3.exe 文件
-
添加 C:\sqlite 到 PATH 環境變量,最后在命令提示符下,使用 sqlite3 命令,將顯示如下結果
-
如果出現以上結果,環境也就沒有什么問題了,當然我這里的環境變量是F盤必須要切到這里。
如需獲取可用的點命令的清單,可以在任何時候輸入 ".help"。例如:
sqlite>.help
讓我們嘗試使用 .show 命令,來查看 SQLite 命令提示符的默認設置。
sqlite>.show
echo: off
explain: off
headers: off
mode: column
nullvalue: ""
output: stdout
separator: "|"
width:
sqlite>
特別注意 鍵入這些命令的時候不要有空格,否則無法運行
在Sqlite中有一種概念叫做動態數據,即Sqlite使用者專業術語叫做親和數據,也就是說,你傳入的數據和字段的格式不匹配會自動進行轉換,這里就不進行列舉了。可以在SQLite官方查看,基本上和別的數據庫差距不大。
創建數據庫
命令:DbName.db;直接即可,有可能你會遇到的問題如下:
創建數據庫時報錯:syntax error,這個錯是因為你創建目錄里已經有數據庫了,那你怎么能在數據庫里再創建數據庫呢,你可以直接在你的sqlite環境變量中目錄 創建一個文件夾 進去之后 再直接該命令就沒事了。
如果你想查看該文件夾中有那些數據庫你可以通過.databases命令來查看。
您可以使用 SQLite .quit 命令退出 sqlite 提示符
創建表
SQLite 的 CREATE TABLE 語句用於在任何給定的數據庫創建一個新表。創建基本表,涉及到命名表、定義列及每一列的數據類型。
刪除表
語法如下:
DROP TABLE database_name.table_name;
還有一些增刪改查的操作這里就不說了,簡單的創建庫和表就說完了 我們在程序中演示進行CRUD操作。
在.NET Core中使用Sqlite數據庫
新建一個.net Core控制台項目
二、在“程序包管理器控制台”下輸入:
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命令
現在我們的數據庫有一定的數據了,我們想要進行備份,可以使用這個命令。
打開之后內容如下,就是我們剛才所操作的。
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;
那么當你沒有數據庫了 只有了sql文件 你可以再進行回檔。
$sqlite3 testDB.db < testDB.sql
免費的Sqlite可視化工具
市面上有很多收費的sqlite的可視化工具,還有免費的,推薦這個 SQLiteExpert 個人免費 要安裝 地址:http://www.sqliteexpert.com/
功能非常強大,如果上述兩款不能滿足,就試試這個吧,當然也可以自己試着做一個,也沒有那么難。