ios簡單使用sqlite3

2021-06-01 17:47:40 字數 2367 閱讀 9943

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庫libsqlite3.0.dylib:

選擇完的效果:

然後,新增成員變數sqlite3 *database,比如:

@inte***ce detailviewcontroller : uiviewcontroller

開啟資料庫

sqlite資料庫是檔案資料庫,是儲存在檔案系統中的。因此需要知道檔案儲存到**,可參見ios中對檔案的操作

if (sqlite3_open([databasefilepath utf8string], &database)==sqlite_ok)

通過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,要經常參考官方函式文件:

QT簡單使用SQLITE3

pro檔案 qt sql 件 qsqldatabase m pdatabase qsqlquery m psqlquery cpp檔案 tr user login.db 路徑一定要準確,這裡使用相對路徑 也就是在專案生成的debug目錄下 qfileinfo file dbfilename 用於判斷...

sqlite3使用簡單示例

1 建立資料庫testdb.db sqlite3 testdb.db 2 一旦資料庫被建立,您就可以使用 sqlite 的 databases 命令來檢查它是否在資料庫列表中,如下所示 sqlite databases 3 建立think test表 sqlite create table thin...

使用sqlite3 模組操作sqlite3資料庫

python內建了sqlite3模組,可以操作流行的嵌入式資料庫sqlite3。如果看了我前面的使用 pymysql 操作mysql資料庫這篇文章就更簡單了。因為它們都遵循pep 249,所以操作方法幾乎相同。廢話就不多說了,直接看 吧。都差不多,首先匯入模組,然後建立連線,然後獲取游標物件,之後利...