SQLite是一款很是輕量級的關係數據庫系統,支持多數SQL92標準。SQLite在使用前不須要安裝設置,不須要進程來啓動、中止或配置,而其餘大多數SQL數據庫引擎是做爲一個單獨的服務器進程,被程序使用某種內部進程通訊(典型的是TCP/IP),完成發送請求到服務器和接收查詢結果的工做,SQLite不採用這種工做方式。使用SQLite時,訪問數據庫的程序直接從磁盤上的數據庫文件讀寫,沒有中間的服務器進程。使用SQLite通常只須要帶上一個dll,就可使用它的所有功能。php
SQLite的主要應用場景有做爲手機應用的數據庫以及小型桌面軟件的數據庫。html
sqlite的官方下載地址爲http://www.sqlite.org/download.html,上面提供了多種版本的sqlite,我選擇下載名稱爲sqlite-shell-win32-x86-3080500.zip 的版本。下載後就直接解壓到磁盤上,能夠看到解壓後只有sqlite3.exe這個文件。sql
接下來須要將sqlite加入到path環境變量中(加入環境變量是爲了更加方便地使用sqlite),右鍵個人電腦-屬性-高級系統設置-環境變量,在系統變量中找到Path,將解壓的文件夾目錄加入到後面(注意是文件夾目錄,例如我本機的目錄 E:Toolssqlite)。打開cmd,輸入sqlite3,若是彈出如下消息,就表示成功了。shell
1. 新建一個數據庫文件數據庫
>命令行進入到要建立db文件的文件夾位置服務器
>使用命令建立數據庫文件: sqlite3 所要建立的db文件名稱工具
>使用命令查看已附加的數據庫文件: .databases佈局
2. 打開已創建的數據庫文件spa
>命令行進入到要打開的db文件的文件夾位置命令行
>使用命令行打開已創建的db文件: sqlite3 文件名稱(注意:假如文件名稱不存在,則會新建一個新的db文件)
3. 查看幫助命令
>命令行直接輸入sqlite3,進去到sqlite3命令行界面
>輸入.help 查看經常使用命令
shell腳本雖然提供了很強大的功能,可是使用起來仍是不夠方便,幸運的是,sqlite有不少開源並且優秀的DBMS!
這裏我將使用一款叫作SQLiteSPY的軟件,官網地址爲http://www.yunqa.de/delphi/doku.php/products/sqlitespy/index,這個軟件是綠色免安裝版,解壓直接運行就能夠了。
能夠看到,SQLiteSpy的界面佈局和SQLServer很相近,操做起來很方便,這裏就不在繼續詳細介紹了。(要知道的一點就是單純使用這個軟件也能夠建立和使用sqlite數據庫,不須要與上面提到的shell工具關聯)
SQLite提供了用於C#調用的dll,下載地址爲http://system.data.sqlite.org/index.html/doc/trunk/www/downloads.wiki,注意根據.NET FRAMEWORK版本下載對應的組件。在項目中只要引入System.Data.SQLite.dll這個組件,就能夠實現數據庫操做了。因爲SQLite.dll實現了ADO.NET的接口,因此熟悉ADO.NET的人上手SQLite.dll也是很是快的。DEMO數據庫表的結構爲:
CREATE TABLE hero ( hero_id INT NOT NULL PRIMARY KEY, hero_name NVARCHAR(10) NOT NULL );
比較須要注意到一點是數據庫鏈接字符串,SQLite使用的鏈接字符串比較簡單,只要寫上數據庫文件的引用路徑就能夠了。DEMO是一個控制檯應用程序,增刪查改的實例代碼以下:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Data.Common; using System.Data.SQLite; namespace ConsoleApp { class Program { static readonly string DB_PATH = "Data Source=E:/database/sqlite/arena.db"; static void Select() { using (SQLiteConnection con = new SQLiteConnection(DB_PATH)) { con.Open(); string sqlStr = @"SELECT * FROM hero"; using(SQLiteCommand cmd = new SQLiteCommand(sqlStr,con)) { using (SQLiteDataReader dr = cmd.ExecuteReader()) { while (dr.Read()) { Console.WriteLine(dr["hero_id"].ToString() + dr["hero_name"]); } } } } } static void Insert() { using (SQLiteConnection con = new SQLiteConnection(DB_PATH)) { con.Open(); string sqlStr = @"INSERT INTO hero VALUES ( 1, '薩滿' )"; using(SQLiteCommand cmd = new SQLiteCommand(sqlStr,con)) { cmd.ExecuteNonQuery(); } } } static void Update() { using (SQLiteConnection con = new SQLiteConnection(DB_PATH)) { con.Open(); string sqlStr = @"UPDATE hero SET hero_name = '盜賊' WHERE hero_id = 1"; using (SQLiteCommand cmd = new SQLiteCommand(sqlStr, con)) { cmd.ExecuteNonQuery(); } } } static void Delete() { using (SQLiteConnection con = new SQLiteConnection(DB_PATH)) { con.Open(); string sqlStr = @"DELETE FROM hero"; using (SQLiteCommand cmd = new SQLiteCommand(sqlStr, con)) { cmd.ExecuteNonQuery(); } } } static void Main(string[] args) { Insert(); Select(); Update(); Select(); Delete(); } } }