SQLite的總結與在C#的使用

這幾天接觸了一下SQLite,算是有點收穫吧,所以總結一下。html

SQLite簡介:git

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

SQLite安裝簡單,下載,解壓配置環境變量就行了,以後就能夠用命令行進行操做。數據庫

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

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

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

SQLite的使用場景:工具

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

  我還想到一個例子,與IOS開發的同志交流了一下子,在IOS開發中, 我就問像用戶名,密碼這些東西是否是也是存到SQLite中了。這個他回答,不用,由於IOS中有一個專門的list集合NSUserDefaults,這個集合就是鍵值對,存一些基本信息,也能夠存不少數據類型。這個我就i想到和H5裏面的本地存儲一個樣,想當初用appcan這種開發混合應用的app時,裏面也有個localstorage這樣的東西,專門存儲一些例如帳戶密碼這些信息。固然IOS裏如今有個更牛掰的東西coredata,是面向對象的,更好用。spa

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

---------------------------------------------------------------------------------------華麗的分割線------------------------------------------------------------------------------------------

  剛忽然看到一篇用EF操做SQLite的文章,以爲不錯,我也摘了一點,到我這個博客裏,這樣也更完整些。

      以下圖,直接在項目中新建實體模型,這樣是不行的,數據源里根本沒有SQLite的數據源。這時候應該去SQLite官網下載一個安裝包,sqlite-netFx46-setup-bundle-x86-2015-1.0.105.2.exe,我下的是這個,好像必須的下載這個,下別的版本不能用。記得裝完後,要重啓VS.

  

  

 

安裝的過程就沒必要說了,最終VS出現右圖這個界面,證實裝好了,下一步就是創建連接了。

哎,好多坑,安裝完成以後,我想直接去VS2015中新建模型,數據源居然尚未System.Data.SQLite  Database File這個選項。緣由是我必須先用NuGet,再項目中引入SQLite,以後行。

相關文章
相關標籤/搜索