你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> iOS SQLite3數據庫操作

iOS SQLite3數據庫操作

編輯:IOS開發綜合

iOS中數據持久化分為四種:屬性列表、對象歸檔、SQLite3和Core Data,SQLite3數據庫操作是一個必不或缺的技術。

SQLite3簡介

SQLite3數據庫是移動端(iOS、Android、嵌入式)上認定的關系型數據庫,與MySQL、Oracle等數據庫相比,具有輕量級的優勢,這就造成了體積小、迅速、簡單功能依舊強大等優勢。

SQLite3語句特點

不區分大小寫

每一句以;結尾

SQLite字段類型

integer:整型

real:浮點值

text:文本字符串

blob:二進制類型

注意:嚴格意義上說,SQLite字符類型是沒有類型,即integer類型的也能存儲其他類型的。但為了編程規范,建議嚴格遵守各個類型

SQLite3語句的種類

DDL語句(create、drop)

創表

create 表名(字段名1 字段類型,字段名2 字段類型,字段名3 字段類型,....);
create table t_Student(id integer name text,age integer,addr text);

拓展:

主鍵約束

為了方便准確記錄數據便於區分每組數據,保證每組數據中有唯一區別的地方就需要添加一個主鍵約束用來標識記錄的唯一性

create table t_Student(id integer primary key autoincrement name text,age integer,addr text);
autoincrement 自動增長

簡單約束

not null :規定字段的值不能為null

unique:規定字段的值必須唯一

default:指定字段的默認值

刪表

drop table 表名;
drop table t_Student;

DML語句(insert update delete)

insert into 表名(字段1,字段2,字段3,...)values(字段1的值,字段2的值,字段3的值,...);
insert into t_Student(name,age,addree)values('唐伯虎',788,'宋朝');
update 表名 set 字段1= 字段1的值 where 條件;
update t_Student set age = 1000 where name='唐伯虎';
delete from 表名 where 條件;
delete from t_Student where age < 100;

DQL語句(select)

select 字段1,字段2,...from表名;
select *from 表名;
select * from t_Student;
select name,age,addree from t_Student;
select name from t_Student where age<100;
select count(字段)from 表名;
select count(*)from t_Student;
select count(age)from t_Student;

其他邊角知識點

創建表時加 if not exists 是為了防止重復創建表,當表存在就不會創建表,若不存在就會創建,類似變量的懶加載

條件句中where 字段可以用>、<、=、is、!=、is not、or、and、它們表達的意思跟上學時代的英語數學課堂意思一樣,再這裡不再贅述。

as可以給表起別名,利用點語法可以訪問表內的字段

讓我們創建一個信息系統吧

技術准備

sqlite3          *db, 數據庫句柄,跟文件句柄FILE很類似

sqlite3_stmt      *stmt, 這個相當於ODBC的Command對象,用於保存編譯好的SQL語句

sqlite3_open(),   打開數據庫,沒有數據庫時創建。

sqlite3_exec(),   執行非查詢的sql語句

sqlite3_bind_text(),設置占位符的內容

sqlite3_prepare_v2(),檢測查詢語句合法性

Sqlite3_step(), 在調用sqlite3_prepare後,使用這個函數在記錄集中移動。

Sqlite3_close(), 關閉數據庫文件

sqlite3_column_text(), 取text類型的數據。

sqlite3_column_blob(),取blob類型的數據

sqlite3_column_int(), 取int類型的數據
創建工程、添加sqlite3類庫包
這裡寫圖片描述
在stZ喎?/kf/ware/vc/" target="_blank" class="keylink">vcnlib2FyZNbQzO2807y4uPa/2Lz+PGJyIC8+DQo8aW1nIGFsdD0="這裡寫圖片描述" src="/uploadfile/Collfiles/20160429/20160429090327370.png" title="\" /> 3.
//在沙盒中創建數據庫
    NSString *filename = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingPathComponent:@"student.sqlite"];
    int result =sqlite3_open(filename.UTF8String,&db);
    if (result==SQLITE_OK) {
        NSLog(@"成功創建數據庫並打開");
     //創建一個張表
        const char *sql="create table if not exists t_Student(id integer primary key autoincrement,name text,age integer,addr text);";
        char *errorMesg=NULL;
        int result=sqlite3_exec(db,sql,NULL,NULL,&errorMesg);
        if (result==SQLITE_OK) {
            NSLog(@"成功創建表");
        }
        else
        {
            NSLog(@"創建表失敗%s",errorMesg);
        }

        }
    else
    {
        NSLog(@"打開數據庫失敗");
    }
增加數據
 NSString *sql=[NSString stringWithFormat:@"insert into t_Student(name,age,addr)values(%@,%@,'%@');",_nameTF.text,_ageTF.text,_addreeTF.text];
    char *errorMesg=NULL;
    int result=sqlite3_exec(db,sql.UTF8String,NULL,NULL,&errorMesg);
    if (result==SQLITE_OK) {
        NSLog(@"添加成功");
    }
    else
    {
        NSLog(@"添加失敗%s",errorMesg);
    }
查詢數據
const char *sql = "select * from t_Student;";
    // 2.定義一個stmt存放結果集
    sqlite3_stmt *stmt = NULL;
    // 3.檢測SQL語句的合法性
    int result = sqlite3_prepare_v2(db, sql, -1, &stmt, NULL);
    if (result == SQLITE_OK) {
        NSLog(@"查詢語句是合法的");
        sqlite3_bind_text(stmt,1,"student",-1,NULL);
        while (sqlite3_step(stmt)==SQLITE_ROW) {
            int sid=sqlite3_column_int(stmt,0);
            const unsigned char *sname=sqlite3_column_text(stmt,1);
            int sage=sqlite3_column_int(stmt,2);
            NSLog(@"%d,%s,%d",sid,sname,sage);
        }
    }
    else
    {
        NSLog(@"查詢語句不合法");
    }

Demo地址為:點擊進入下載

SQLite3可視化工具

Navicat Premium

Navicat Premium 內部集成了SQLite3可以很友好的進行數據的創建,增添、修改、刪除等操作。
下面介紹一下 Navicat Premium的用法(由於CSDN上傳附件不能超過60M需要Navicat Premium軟件的可以在下面給我留言,私下發給你)
1. 打開Navicat Premium 軟件
2. 點擊左上角這裡寫圖片描述選擇SQLite選項 ,在對話框上填寫數據庫名字選擇數據類型、數據庫存放地址,如下圖:
這裡寫圖片描述
點擊OK。

3.點擊main下的Tables,右擊選擇New Table創建一個表文件

 

這裡寫圖片描述

 

注意:

id 設置為Key(唯一標示),並勾選了Auto increment自增長按鈕

age設置了默認值為20,如果不輸入數字就初始化為默認值

4.點擊這裡寫圖片描述按鈕後設置表的名字為t_Student
5.雙擊t_Student後點擊 +號 添加幾組數據
這裡寫圖片描述
可以觀察到我們不為id和age賦值的時候會有默認值
另外我們還可以用數據庫語句創建表和添加數據以及查詢數據
這裡寫圖片描述

INSERT into t_Student(name,age,addree)VALUES('喬布斯',64,'蘋果公司')

這裡寫圖片描述

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved