SQLite的基本封裝

2021-07-01 23:27:30 字數 2248 閱讀 5841

當我們使用sqlite時,都需要先建立資料庫建立資料表,再執行相應地sql語句,這樣不利於對資料庫操作進行統一管理,也不符合物件導向的思想,當我們的需求發生改變時,例如資料庫表名改了,或者是要新增幾個字段,這時候就會出現一種四處找資料庫操作**的情況,如果是一處兩處還好,但如果是上百處,那就會是乙個很大的工作量。所以我們可以來定義乙個工具類sqlmanager,統一對資料庫操作進行管理。

工具類sqlmanager一般都會被定義為單例模式,正常情況下,系統中sqlmanager物件只需儲存乙份,.h檔案上對外提供乙個獲取單例的介面

/** 獲取單例物件 */

+ (instancetype)sharemanage;

.m檔案中實現該單例方法

static sqlmanager *_instance;

+ (instancetype)sharemanage

); return _instance;

}

既然是資料庫管理工具類,要對資料庫進行操作,同樣地我們需要建立資料庫還有資料庫表,建立只需要乙個次,所以可以將建立**寫在initialize方法裡面,

+ (void)initialize

}

現在我們讓工具類向外提供乙個方法,用來向資料庫插入一條學生資料

/** 插入學生資料 */

- (bool)insertstudent:(hmstudent *)student;

當然我們首先需要定義乙個學生模型來儲存資料,學生類中得字段根資料庫表中得字段一一對應

@property (nonatomic, copy) nsstring *name;

@property (nonatomic, assign) int age;

@property (nonatomic, assign) double score;

@property (nonatomic, assign) int id;

insertstudent:方法的實現如下

- (bool)insertstudent:(hmstudent *)student

return no;

}

如此該方法就封裝了乙個插入操作。

再來到我們需要使用資料庫操作的類裡面,只需要匯入工具類的標頭檔案,就可以以物件導向的方式向資料庫中插入一條資料

student *stu = [[student alloc] init];

stu.name = @"lnj";

stu.age = 30;

stu.score = 100.0;

if ([[sqlmanager sharemanage]insertstudent:stu])

以此類推,我們可以封裝其他的刪除修改操作,以後如果出現什麼資料庫需求修改時,我們就只用專心的修改工具類就行了,就不用四處的去找資料庫相關操作的**了,而且相比較於之間運算元據庫的方式,以上**更具備閱讀性。

查詢的方式比較特殊,現在就來簡單的實現以下。

同樣需要對外提供乙個藉口

- (nsarray *)query;

該方法用來查詢所有的資料,並返回乙個學生模型的陣列

nsstring *sql = @"select * from t_student;";

sqlite3_stmt *stemt = null;

sqlite3_prepare_v2(_db, sql.utf8string, -1, &stemt, null);

// 判斷有沒有查詢結果

nsmutablearray *arrm = [nsmutablearray array];

while (sqlite3_step(stemt) == sqlite_row)

return arrm;

當我們需要在控制器中獲取資料庫中得資料時,只要如下幾行**

nsarray *arr = [[sqlmanager sharemanage] query];

for (student *stu in arr)

so easy!你會發現控制器需要關注的**越來越少,**會越來越簡潔,這就是封裝的魅力!

SQLite的簡單封裝

studenttool.h sqlite的封裝 學生資料的crud import class student inte ce studenttool nsobject bool addstudent student student 獲得所有學生 return 陣列中裝著都說student模型 nsa...

C 封裝SQLite例項《二》

這一篇部落格主要講如何使用sqlite有關庫函式去管理資料庫中的一張表。主要用到的函式 sqlite api int sqlite3 get table sqlite3 db,the database on which the sql executes const char zsql,the sql...

C 封裝SQLite例項《六》

之前的連續五篇大致介紹了各種sqlite的原生函式原型,引數以及用途等,並對各個封裝的類做了詳細的介紹,最後一篇將展示一下怎麼使用封裝,使用封裝的時候需要注意的問題等。假設已經存在乙個資料庫名為firsqlite.db 下面使用各種類來對其做各種常規訪問與操作。最開始要定義乙個cppsqlite3d...