ios簡單sqlite使用

2021-08-27 02:20:37 字數 2114 閱讀 1077

sqlite是嵌入式的和輕量級的sql資料庫。sqlite是由c實現的。廣泛用於包括瀏覽器(支援html5的大部分瀏覽器,ie除外)、ios、android以及一些便攜需求的小型web應用系統。

使用sqlite前的準備

使用sqlite是很多做ios開發中第一次面對c的情況,包括我。因為sqlite是c寫的,objc可以直接使用c**。在sqlite前,一般都會使用cocoa touch框架,都是基於objc的。

首先,需要在對應檔案的標頭檔案中加入:

#import "/usr/include/sqlite3.h"

並在frameworks中加入所需的庫,否則會報錯:

undefined symbols:

"_sqlite3_open", referenced from:

加入庫的方法是:

選擇sqlite庫:

選擇完的效果:

然後,應該有個成員變數,比如我的**:

@inte***ce detailviewcontroller : uiviewcontroller

通過ssh檢視documents目錄,發現mydb檔案已經建立。sqlite的策略是如果有該檔案就開啟,如果沒有就建立檔案,也就是建立資料庫。

這裡要注意,使用的是c語法,sqlite3_open傳入的是database的位址。

關閉資料庫

資料庫使用完畢後,要關閉,比如退出應用的時候:

- (void)viewdidunload

建表語句

資料庫開啟以後,如果沒有表,建表:

char *errormsg;

const char *createsql="create table if not exists persons (id integer primary key autoincrement,name text)";

if (sqlite3_exec(database, createsql, null, null, &errormsg)==sqlite_ok)

這裡要特別注意errormsg傳的是位址,因為該函式要通過位址引用來寫報錯字元資訊。

向表中插入記錄

和建表語句類似:

const char *insertsql="insert into persons (name) values(『張三』)";

if (sqlite3_exec(database, insertsql, null, null, &errormsg)==sqlite_ok)

錯誤資訊的處理

如果在多個地方使用errormsg,那麼每次使用完畢要清空一下字串,比如這樣:

if (sqlite3_exec(database, createsql, null, null, &errormsg)==sqlite_ok) else

查詢結果集

結果集的查詢,需要用到statement:

const char *selectsql="select id,name from persons";

sqlite3_stmt *statement;

if (sqlite3_prepare_v2(database, selectsql, -1, &statement, nil)==sqlite_ok)

while (sqlite3_step(statement)==sqlite_row)

sqlite3_finalize(statement);

不過這裡有個問題,看看列印的日誌:

亂碼。因為直接用的char型別來做的。

解決辦法是,用nsstring替代char:

while (sqlite3_step(statement)==sqlite_row)

char生成nsstring的時候做一次顯式的編碼。問題解決:

這說明:

使用sqlite c api,要經常參考官方函式文件:

from:

ios簡單使用sqlite3

sqlite是嵌入式的和輕量級的sql資料庫。sqlite是由c實現的。廣泛用於包括瀏覽器 支援html5的大部分瀏覽器,ie除外 ios android以及一些便攜需求的小型web應用系統。使用sqlite前的準備 使用sqlite是很多做ios開發中第一次面對c的情況,包括我。因為sqlite是...

SQLite 簡單使用

在ubuntu 12.04下進行sqlite開發簡單例項如下 1 安裝sqlite3 hadron hadron sudo apt get install sqlite sqlite3 2 檢視版本號 hadron hadron sqlite3 version 3 建立test資料庫 hadron ...

SQLite 簡單使用(一)

sqlite 使用 新增列 alter table user add column sync state integer not null default 1 建立表 create table if not exists localuser uid integer not null primary ...