一、Sqlite數據類型: NULL. 空值、INTEGER. 整型、REAL.浮點型、TEXT.文本類型、BLOB. 二進制類型,用來存儲文件,好比圖片。sql
二、使用sqlite3 首先要導入libsqlite3.dylib,並導入頭文件Sqlite3.h。定義 sqlite3 *_db;數據庫
三、設置數據文件存放路徑,如沙盒的Doucuments文件夾內。sqlite
NSString *_dbpath = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/mySql.sqlite"];對象
NSLog(@"%@",_dbpath);圖片
四、打開數據表 sqlite3_open方法字符串
打開數據庫文件,第一個參數表明數據庫文件的路徑,注意須要調用UTF8String方法將NSString轉換成C的字符串格式,第二個參數表明數據庫對象,該方法若是返回0(SQLITE_OK),表明數據庫代開成功,若是該路徑沒有數據庫文件,則先建立再打開,不然直接打開string
int r = sqlite3_open([_dbpath UTF8String], &_db);it
五、建立數據表 create table if not exists(若是表不存在) Student(表名,本身定義) (該括好放要保存的信息:字段名 字段格式,多個字段之間用逗號隔開)table
NSString *path = @"create table if not exists Student(name TEXT,age INTEGER)";//若是數據庫中沒有Student表,則建立該表,包含 字符串形式的name和整型的agedate
六、執行數據庫語句
//執行數據庫語句: 第一個參數表明執行的數據庫對象,也就是打開的數據庫,第二個參數表明執行語句,後面三個直接給NULL便可
sqlite3_exec(_db, [path UTF8String], NULL, NULL, NULL);
七、增長(插入)
//sql插入語句:insert into Student(表名) (要進行保存的字段名,名字之間用逗號隔開) values(要保存的實際數據,多個數據用逗號隔開,注意:此處數據要與前面的字段名保持一致,且若是是TEXT類型,須要用單引號引發來)
NSString *s = @"insert into Student(name,age) values('小明',19)";
sqlite3_exec(_db, [s UTF8String], NULL, NULL, NULL);
NSString *s1 = @"insert into Student(name,age) values('小紅',21)";
sqlite3_exec(_db, [s1 UTF8String], NULL, NULL, NULL);
八、刪除
//sql刪除語句: delete(關鍵字) from Student(表名) where(條件關鍵字) name(字段名) = ‘小明’(要刪除數據的條件,若是是TEXT,用單引號引發來)
NSString *desqlite = @"delete from Student where name = '小明'";
sqlite3_exec(_db, [desqlite UTF8String], NULL, NULL, NULL);
//刪除所有
NSString *alldel = @"delete from Student";
sqlite3_exec(_db, [alldel UTF8String], NULL, NULL, NULL);
九、更新(改)
//sql更新語句:update(關鍵字) Student(表名) set(關鍵字,賦值) age(字段名) = 25(要更改的值,若是要更新多個字段,則用逗號隔開) where(條件關鍵字) rowid(字段名) = 5(條件得看錶中具體是那一行)
NSString *upsql = @"update Studnet set age = 19,name = '小李' where rowid = 5";
sqlite3_exec(_db, [upsql UTF8String], NULL, NULL, NULL);
十、查詢語句
//查詢全部:select(關鍵字) * from Student(表名)
NSString *querysql = @"select *from Studnet";
sqlite3_stmt *_stmt = nil;//用於存放查詢結果
int res = sqlite3_prepare(_db, [querysql UTF8String], -1, &_stmt, NULL);//檢查sql語句的合法性,若是合法則直接運行,返回結果爲0
if (res == 0) {
//遍歷結果集_stmt,若是sqlite3_step返回100,表明有查詢結果,先取出第一條,而後再指向下一條,直到sqlite3_step返回101,表明遍歷結束
while (SQLITE_ROW == sqlite3_step(_stmt)) {
//取出單行結果中的某一列,從0開始
const unsigned char *s = sqlite3_column_text(_stmt, 0);
//將查詢結果轉換成oc字符串
NSString *name = [NSString stringWithUTF8String:(const char *)s];
NSLog(@"%@",name);
}
}
十一、條件查詢
NSString *querysql1 = @"select *from Student where age<20";
sqlite3_stmt *_stmt1 = nil;//用於存放查詢結果
int res1 = sqlite3_prepare(_db, [querysql1 UTF8String], -1, &_stmt1, NULL);//檢查sql語句的合法性,若是合法則直接運行,返回結果爲0
if (res1 == 0) {
//遍歷結果集_stmt,若是sqlite3_step返回100,表明有查詢結果,先取出第一條,而後再指向下一條,直到sqlite3_step返回101,表明遍歷結束
while (SQLITE_ROW == sqlite3_step(_stmt1)) {
//取出單行結果中的某一列,從0開始
const unsigned char *s1 = sqlite3_column_text(_stmt1, 0);
//將查詢結果轉換成oc字符串
NSString *name1 = [NSString stringWithUTF8String:(const char*)s1];
NSLog(@"%@",name1);
}
}
十二、關閉數據庫
sqlite3_close(_db);// 關閉數據庫