iOS的SQLite編程
iOS的SQLite編程並沒有使用OC面向對象的語法,而是使用了原生的C函數庫。
爲了在項目中使用iOS的SQLite編程API,需要先完成如下兩步:
(1) 爲項目增加lisqlite3.dylib。
(2) 在需要使用SQLiteAPI的OC類中使用如下代碼導入libsqlite3.dylib:
#import<sqlite3.h>
SQLite數據庫操作步驟如下:
(1) 調用sqlite3_open()函數打開與數據庫的連接。
(2) 如果執行簡單的DDL、DML語句,則直接調用sqlite3_exec()函數執行這些SQL語句即可。
(3) 如果預編譯的SQL語句中包含了佔位符參數,還需要調用sqlite3_prepare_v2()函數預編譯SQL語句。
(4) 如果預編譯的SQL語句中包含了佔位符參數,還需要調用sqlite3_bind_xx()函數爲佔位符參數綁定參數值。
(5) 如果預編譯Statement執行的SQL語句是DDL或DML,則調用sqlite3_step()函數執行SQL語句即可;如果預編譯Statement執行的SQL語句是查詢語句,則循壞調用sqlite3_step()函數一次取出每個數據行即可。
(6) 如果程序中使用預編譯Statemen執行過SQL語句,則調用sqlite3_finalize()函數關閉sqlite3_stmt。
(7) 調用sqlite3_close()函數關閉數據庫連接。
創建數據庫和表
使用sqlit3_open()函數即可打開或創建數據庫,代碼如下:
Sqlite3* database;
Sqlite3_open([[selfdbPath]UTF8String], &database);
上面代碼用於打開或者創建一個SQLite數據庫。
接下來爲創建數據庫表:
Const char * createSQL = “create table if notexists word_inf\(_id integer primary key autoincrement, \word,\detail)”;
//執行表語句
Int result = sqlite3_exec(database, createSQL,NULL, NULL, &errMsg);
使用SQL語句執行查詢
Sqlite3_exec()函數可執行無須返回值的SQL語句,一般用於執行DDL或DML語句;如果需要執行查詢語句,一般會調用sqlite3_prepare_v2()預編譯查詢語句,然後循環調用sqlite3_step()函數取出查詢結果集。
使用sqlite3工具
Mac OS X的lion版或更高版本的系統已經自帶sqlite3工具,它是一個簡單的SQLite數據庫管理工具,類似於MySQL提供的命令行窗口。開發者可以利用該工具來查詢、管理數據庫。
Sqlite3中常用的命令如下:
(1) .datbases:查看當前數據庫。
(2) .tables:查看當前數據庫裏的數據表。
(3) .help:查看sqlite3支持的命令。
需要指出的是,SQLite內部只支持NULL、INTEGER、REAL、TEXT和BLOB這5種類型,但實際上SQLite完全可以接收varchar(n)、char(n)、decimal(p,s)等數據類型,知不是SQLite會在運算或保存時將它們轉換爲上面5種數據類型中的相應類型。
除此之外,SQLite允許把各種類型的數據保存到任何類型字段中,開發者可以不用管理聲明該字段所使用的數據類型。