1、 SQLite3 介紹
SQLite是一款輕型的嵌入式數據庫
它占用資源非常的低,處理速度快,高效而且可靠。
在嵌入式設備中,可能只需要幾百K的內存就夠了。
- 數據庫:
數據庫(Database)是按照數據結構來組織、存儲和管理數據的倉庫。 - 數據庫可以分為2大種類
1. 關系型數據庫(主流)
2. 對象型數據庫
常用的關系型數據庫:
PC端:Oracle、MySQL、SQL Server、Access、DB2、 Sybase
嵌入式\移動客戶端:SQLite
對象型型數據庫:
remal , core date。
數據庫是如何存儲數據的:
數據庫的存儲結構和excel很像,以表(table)為單位
** 數據庫存儲數據的步驟 **
- 新建一個數據庫
- 新建一張表(table)
- 添加多個字段(column,列,屬性)
- 添加多行記錄(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 ** 創建表**
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
- 數據操作
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;
- SQLite 高級操作
3.1 起別名
主要是給表起別名
3.2 排序
selete * from 表 order by 字段;默認是升序
3.3 分頁
select * frome表名 limit 數值1,數值2;
數值1:跳過幾條數據。
數值2: 取幾條數據。
3、FMDB 簡單介紹
什么是FMDB
FMDB是iOS平臺的SQLite數據庫框架
FMDB以OC的方式封裝了SQLite的C語言APIFMDB的優點
使用起來更加面向對象,省去了很多麻煩、冗余的C語言代碼
對比蘋果自帶的Core Data框架,更加輕量級和靈活
提供了多線程安全的數據庫操作方法,有效地防止數據混亂FMDB的github地址
https://github.com/ccgus/fmdb核心類
FMDB有三個主要的類
(1)FMDatabase:一個FMDatabase對象就代表一個單獨的SQLite數據庫,用來執行 sql 語句。
(2)FMResultSet:代表使用FMDatabase執行查詢后的結果集
(3)FMDatabaseQueue:用于在多線程中執行多個查詢或更新,它是線程安全的創建 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("數據庫創建失敗")
}
- 數據庫操作的執行 (增,刪,改,查)
數據庫執行操作之前,必須將數據進行打開,如果沒有足夠的資源或權限打開和/或創建數據庫, 打開失敗。
在FMDB中,除查詢以外的所有操作,都稱為“更新”
執行更新返回一個值,一個布爾值。true 意味著更新成功執行,false意味著一些錯誤的返回值。你可以調用 lastErrorMessage 和 lastErrorCode 方法來獲取更多的信息。
查詢操作
使用 一個executequery……方法來執行 SELECT語句進行查詢操作。
執行查詢會返回一個FMResultSet結果集對象,如果操作成功結果集將有值,失敗結果集將為nil。您應該使用 lastErrorMessage 和 lastErrorCode 方法來確定查詢失敗的原因。
3、 SQLite3 在項目中使用
-
要使用 SQLite3 我們就必須要添加一個
libsqlite3.dylib
類庫, 并導入頭文件。
這是一個C語言的庫,所以直接使用SQLite3還是比較麻煩的。我們使用 OC 的封裝 FMDB
20150423225952694.png
20150423230336717.png SQLite3 是基于 c 語言的,我們使用 SQLite3 的 OC 的第三方類庫 FMDB下載地址 https://github.com/ccgus/fmdb
cocoapods 安裝 FMDB
(cocoapods 安裝,不需要上面添加類庫的步驟)
$ pod 'FMDB'