1. 程式人生 > >SQLite的總結與在C#的使用

SQLite的總結與在C#的使用

結構 ppc 表示 mce 鏈接 inux .exe table 配置

這幾天接觸了一下SQLite,算是有點收獲吧,因此總結一下。

SQLite簡介:

SQLite是用C語言編寫的數據庫引擎,可以運行在Linux、Windows、Mac平臺上。

SQLite安裝簡單,下載,解壓配置環境變量就好了,之後就可以用命令行進行操作。

SQLite中每個數據庫都是以單個文件的形式存在的,傳說一個數據庫最大容量是2T。

在事物方面,允許多個進程在同一時間從同一數據庫讀取數據,但是呢,只有一個能進行寫操作。

SQLite在使用時,是直接從磁盤上進行數據庫讀寫的,他不支持遠程鏈接。

SQLite的使用場景:

  最常見的就是安卓和IOS開發了,因為SQLite占用空間和內存很小,頂多也就幾百k,把一些數據存到本地,不用通過網絡與遠程數據庫交互。

  我還想到一個例子,與IOS開發的同誌交流了一會兒,在IOS開發中, 我就問像用戶名,密碼這些東西是不是也是存到SQLite中了。這個他回答,不用,因為IOS中有一個專門的list集合NSUserDefaults,這個集合就是鍵值對,存一些基本信息,也可以存很多數據類型。這個我就i想到和H5裏面的本地存儲一個樣,想當初用appcan這種開發混合應用的app時,裏面也有個localstorage這樣的東西,專門存儲一些例如賬戶密碼這些信息。當然IOS裏現在有個更牛掰的東西coredata,是面向對象的,更好用。

SQLite命令操作

  1.執行sqlite3命令。
  當執行該命令的時候沒有傳遞任何參數表示默認連接到了一個內存數據庫,當退出該程序的時候,數據庫自動銷毀。
  2.退出命令:.quit 或.exit 。
3.創建一個數據庫:sqlite3 test.db
  註意

:創建完畢該數據庫後,不會立刻在磁盤上生成對應的文件,需要等待在該數據庫中創建對象後,數據庫文件才會寫入到磁盤上。或者也可以用.databases 命令,也行。

  4.設置查詢語句顯示樣式:
  .mode column --設置以列的方式顯示數據
  .headers on --設置查詢的時候顯示列名
  .echo on --設置執行Sql語句的時候回顯,剛執行的命令
  .nullvalue NULL --設置顯示的時候把所有的空值顯示為null

  .databases --顯示當前附加到管理器中的所有的數據庫

  .tables 顯示當前管理器中可以看到的所有的表

  .schema 顯示數據庫中的內容的腳本

  .schema 對象名 顯示某個對象的腳本


  5.創建索引
  create index IX_mytable_name on mytable(name);

  --查看所有的索引
  .indices

  limit n ;等價於t-sql中的top

  offset n;跳過前幾條。

6.日期函數:
select date()
select time();
select time(‘now‘,‘localtime‘); --17:51:16
select datetime(‘now‘,‘localtime‘);--2017-07-06 17:51:35

介紹一款SQLite的管理工具:SQLiteStudio

技術分享

SQLite在C#中使用

  SQLite提供了多種語言操作的API,當然也有C#的。其書寫方法幾乎和ADO.NET的一摸一樣。但是要引用System.Data.SQLite.dll,我們新建項目,用Nuget去直接安裝System.Data.SQLite,這樣可以。也可以去官網去下載安裝包,安裝完成之後,去引用這個dll。

表結構:

CREATE TABLE [mytable] (

[id] INTEGER  NOT NULL PRIMARY KEY AUTOINCREMENT,

[value] text  NULL

, email text   null);

C#代碼:

    //創建連接字符串
            string constr = "Data Source=C:/SQLite/test.db;";
            //創建連接對象
            using (SQLiteConnection con = new SQLiteConnection(constr))
            {

                //創建SQL語句
                string sql = "select * from mytable";
                //創建命令對象
                using (SQLiteCommand cmd = new SQLiteCommand(sql, con))
                {

                    con.Open();
                    using (SQLiteDataReader reader = cmd.ExecuteReader())
                    {

                        if (reader.HasRows)
                        {
                            while (reader.Read())
                            {
                                Console.WriteLine(reader.GetInt32(0)+" , "+reader.GetString(1));

                            }
                        }
                    }
                }
            }

技術分享

註意:可能會遇到 無法加載 DLL“SQLite.Interop.dll”: 找不到指定的模塊,這種報錯。解決辦法,項目引用SQLite.Interop.dll,假如不起作用,替換一下System.Data.SQLite.dll的版本。

最後,還封裝了一個自己的類庫,關於SQLite的,以後,該慢慢積累自己的類庫了。

http://git.oschina.net/sdadx/leiku/blob/master/SqlLibrary/SqliteHelper.cs

SQLite的總結與在C#的使用