Sqlite

一、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);// 關閉數據庫

相關文章
相關標籤/搜索