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;這裡要特別注意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)
向表中插入記錄
和建表語句類似:
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,所以操作方法幾乎相同。廢話就不多說了,直接看 吧。都差不多,首先匯入模組,然後建立連線,然後獲取游標物件,之後利...