SQLite3 的介紹和 FMDB 框架的使用

1、 SQLite3 介紹

SQLite是一款輕型的嵌入式數據庫
它占用資源非常的低,處理速度快,高效而且可靠。
在嵌入式設備中,可能只需要幾百K的內存就夠了。

  • 數據庫:
    數據庫(Database)是按照數據結構來組織、存儲和管理數據的倉庫。
  • 數據庫可以分為2大種類
1. 關系型數據庫(主流)
2. 對象型數據庫

常用的關系型數據庫:
PC端:Oracle、MySQL、SQL Server、Access、DB2、 Sybase
嵌入式\移動客戶端:SQLite

對象型型數據庫:
remal , core date。

數據庫是如何存儲數據的:
數據庫的存儲結構和excel很像,以表(table)為單位

** 數據庫存儲數據的步驟 **

  1. 新建一個數據庫
  2. 新建一張表(table)
  3. 添加多個字段(column,列,屬性)
  4. 添加多行記錄(row,每行存放多個字段對應的值)
  • SQLite3常用的5種數據類型:

    • text:文本字符串
    • integer:整數
    • real :浮點數
    • null :布爾值(true,false)
    • blob: 二進制數據,比如文件,圖片之類的

    實際上SQLite是無類型的。即不管你在創表時指定的字段類型是什么,存儲是依然可以存儲任意類型的數據。而且在創表時也可以不指定字段類型。SQLite之所以什么類型就是為了良好的編程規范和方便開發人員交流,所以平時在使用時最好設置正確的字段類型!主鍵必須設置成integer

  • SQLite 命令
    與關系數據庫進行交互的標準 SQLite 命令類似于 SQL。命令包括 CREATE、SELECT、INSERT、UPDATE、DELETE 和 DROP。這些命令基于它們的操作性質可分為以下幾種:

    • DDL - 數據定義語言:
      命令 描述
      CREATE 創建一個新的表,一個表的視圖,或者數據庫中的其他對象。
      ALTER 修改數據庫中的某個已有的數據庫對象,比如一個表。
      DROP 刪除整個表,或者表的視圖,或者數據庫中的其他對象。

    • DML - 數據操作語言
      命令 描述
      INSERT 創建一條記錄。
      UPDATE 修改記錄。
      DELETE 刪除記錄。

    • DQL - 數據查詢語言
      命令 描述
      SELECT 從一個或多個表中檢索某些記錄。

      SQL 語句特點
      不區分大小寫
      有關鍵字
      不可使用關鍵字命名表和字段

2、 SQLite3 的語法使用

SQLite 常見的操作語法:語法學習網站

  1. 表操作
    1.1 ** 創建表**
create table 表名(字段1    類型,字段2    類型)
/*
1、先判斷 t_demo 表是否存在,不存在我就創建,(這個是避免報錯)
2、設置 id 為主鍵,
3、設置 id 是自增長 (只有integer 的數據才可以自增長)
*/
CREATE TABLE   IF   NOT EXISTS t_demo (id INTEGER  PRIMARY   KEY AUTOINCREMENT, name TEXT); 

1.2. 刪除表

drop table  表名
/*
1、進行一次判斷,如果表存在就將表刪除(避免出錯)
*/
DROP  TABLE IF EXISTS t_demo
  1. 數據操作
    2.1 插入數據 (增)
insert   into  表名 (字段1,字段2)values (字段值1, 字段值2);  
/*
插入數據
*/
INSERT INTO t_demo (id, name) VALUES (5, 'zhangsan');

上一句只能運行一次,第二次就報錯(id 是自增長的,每次插入一個固定值插不進去)

INSERT INTO t_demo ( name) VALUES ('zhangsan');

注意點:
數據庫插入操作中字符串使用 單引號

2.2 更新數據 (改)

update   表名   set  字段1 = 字段1 的值,字段2 = 字段2的值。。。
/*
更新數據
注意更新數據的時候不要更新主鍵
*/
UPDATE t_demo  SET   name = 'lisi';

(這個是更新name 下面的所有數據的值為 lisi,主要是沒有指定更新那一條數據)
更新固定的數據

where 字段= 某個值;
/*
修改指定的那條數據
*/
UPDATE t_demo SET name = 'lisi' WHERE id = 15;

2.3 刪除數據(刪)

delete from 表名
/*
刪除數據
*/
DELETE FROM t_demo;

(刪除表里面的所有數據,主要是沒有指定要刪除那些數據)

/*
刪除指定的那條數據
*/
DELETE FROM t_demo WHERE id = 15;

2.4 查詢(查)

selete 字段1,字段2   。。。 from  表名
/*
查詢
*/
SELECT id FROM t_demo;
/*
    查詢所有字段
*/
SELECT * FROM t_demo;
  1. SQLite 高級操作
    3.1 起別名
    主要是給表起別名
    3.2 排序
selete * from  表  order by 字段;默認是升序

3.3 分頁

 select * frome表名  limit 數值1,數值2;
數值1:跳過幾條數據。
數值2: 取幾條數據。  

3、FMDB 簡單介紹

  1. 什么是FMDB
    FMDB是iOS平臺的SQLite數據庫框架
    FMDB以OC的方式封裝了SQLite的C語言API

  2. FMDB的優點
    使用起來更加面向對象,省去了很多麻煩、冗余的C語言代碼
    對比蘋果自帶的Core Data框架,更加輕量級和靈活
    提供了多線程安全的數據庫操作方法,有效地防止數據混亂

  3. FMDB的github地址
    https://github.com/ccgus/fmdb

  4. 核心類
    FMDB有三個主要的類
    (1)FMDatabase:一個FMDatabase對象就代表一個單獨的SQLite數據庫,用來執行 sql 語句。
    (2)FMResultSet:代表使用FMDatabase執行查詢后的結果集
    (3)FMDatabaseQueue:用于在多線程中執行多個查詢或更新,它是線程安全的

  5. 創建 SQLite 數據庫的三種方式
    (1)具體路徑:一個文件系統路徑。磁盤上的文件不存在,就自動創建一個數據庫文件。
    (2)空字符串@"" :會在臨時目錄創建一個空的數據庫, 當FMDatabase連接關閉時,數據庫文件也被刪除。
    (3)nil:會創建一個內存中臨時數據庫,當FMDatabase連接關閉時,數據庫會被銷毀

// 創建數據庫
/*
設置數據庫保存在沙盒的Doc的文件夾
*/  
let cachePath = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true).last
let sqliteDataBasePath = cachePath?.stringByAppendingString("/sqlite.db")
 
 // 這里 path 設置的為具體的路徑
 db = FMDatabase(path: sqliteDataBasePath)
        
 // 打開數據庫
 if db!.open() {
      // 數據庫創建成功,并打開
      print("數據庫創建成功,并打開")
} else {
     // 數據庫創建失敗
      print("數據庫創建失敗")
}
  1. 數據庫操作的執行 (增,刪,改,查)
    數據庫執行操作之前,必須將數據進行打開,如果沒有足夠的資源或權限打開和/或創建數據庫, 打開失敗。

在FMDB中,除查詢以外的所有操作,都稱為“更新”
執行更新返回一個值,一個布爾值。true 意味著更新成功執行,false意味著一些錯誤的返回值。你可以調用 lastErrorMessage 和 lastErrorCode 方法來獲取更多的信息。

查詢操作
使用 一個executequery……方法來執行 SELECT語句進行查詢操作。
執行查詢會返回一個FMResultSet結果集對象,如果操作成功結果集將有值,失敗結果集將為nil。您應該使用 lastErrorMessage 和 lastErrorCode 方法來確定查詢失敗的原因。

3、 SQLite3 在項目中使用

  1. 要使用 SQLite3 我們就必須要添加一個 libsqlite3.dylib 類庫, 并導入頭文件。
    這是一個C語言的庫,所以直接使用SQLite3還是比較麻煩的。我們使用 OC 的封裝 FMDB

    20150423225952694.png

    20150423230336717.png

  2. SQLite3 是基于 c 語言的,我們使用 SQLite3 的 OC 的第三方類庫 FMDB下載地址 https://github.com/ccgus/fmdb
    cocoapods 安裝 FMDB
    (cocoapods 安裝,不需要上面添加類庫的步驟)

$ pod 'FMDB'
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容