iOS SQLite資料庫使用

2021-06-27 01:07:05 字數 3463 閱讀 1575

首先需要在專案中引用sqlite

3的開發包,下面是在iphone sdk

3.0下的目錄:

/developer/platforms/iphoneos.platform/developer/sdks/iphoneos3.0.sdk/usr/lib/libsqlite3.0.dylib

到這裡你需要事先用命令來建立sqlite

3的資料庫檔案,並在其中建立自己的表等等,然後作為資源檔案新增到專案,然後在程式第一次執行的時候複製到程式下的documents或其他目錄下,關於sqlite

3的基本操作網上已經有不少文章,這裡就不重複了。

在iphone中使用sqlite 3

主要步驟如下: 1

首先獲取iphone上sqlite 3

的資料庫檔案的位址 2

開啟sqlite 3

的資料庫檔案 3

定義sql文 4

邦定執行sql所需要的引數

5執行sql文,並獲取結果

6釋放資源

7關閉sqlite 3

資料庫。

下面結合**來示範一下。

// 首先獲取iphone上sqlite3的資料庫檔案的位址

nsarray *paths = nssearchpathfordirectoriesindomains(nsdocumentdirectory, nsuserdomainmask, yes);

nsstring *documentsdirectory = [paths objectatindex:0];

nsstring

*path = [

documentsdirectory

@"database_name"];

// 開啟sqlite3的資料庫檔案

sqlite3 *database;sqlite3_open([path utf8string], &database);

// 定義sql文

sqlite3_stmt *stmt;

const

char

*sql = "select * from table_name where pk=? and name=?";

sqlite3_prepare_v2(database, sql, -1, &stmt, null);

// 邦定第乙個int引數

sqlite3_bind_int(stmt, 1, 1);

// 邦定第二個字串引數

sqlite3_bind_text(stmt, 2, [title utf8string], -1, sqlite_transient);

// 執行sql文,並獲取結果

sqlite3_step(stmt);

// 釋放資源

sqlite3_finalize(stmt);

// 關閉sqlite3資料庫

sqlite3_close(database);

iphone中的sqlite應用

sqlite是基於c的api,在iphone中的執行速度超級快(在蘋果**上也有乙個對比,確實應該是速度最快的)。

由於在iphone3

.0上已經支援了core data,是蘋果乙個新的api,並且是基於sqlite的。速度也是非常快吧,信不信由你。所以我們對sqlite僅需要懂一些即可,以下是一些基礎資訊

//**********==

首先在frameworks  中加入sqlite 的庫:  lib/libsqlite3.dylib

完整路徑如下:

/developer/platforms/iphoneos.platform/developer/sdks/iphoneos3.0.sdk/usr/lib/libsqlite3.dylib

然後包含標頭檔案#import

一般操作:

【1】開啟資料庫,如果沒有,那麼建立乙個

sqlite3* database_;

-(bool) open

return

yes;

}if(sqlite3_open([path utf8string], &database_) == sqlite_ok) else

return no; }

【2】建立**

//建立**,假設有五個字段,(id,cid,title,imagedata ,imagelen )

//說明一下,id為**的主鍵,必須有。

//cid,和title都是字串,imagedata是二進位制資料,imagelen 是該二進位制資料的長度。

- (bool) createchannelstable:(sqlite3*)db

int success = sqlite3_step(statement);

sqlite3_finalize(statement);

if ( success != sqlite_done)

nslog

(@"create table 'channels' successed.");

return yes; }

【3】向**中插入一條記錄

//假設channle是乙個資料結構體,儲存了一條記錄的內容。

- (bool) insertonechannel:(channel*)channel

//這裡的數字1,2,3,4代表第幾個問號

sqlite3_bind_text(statement, 1, [channel.id_ utf8string], -1, sqlite_transient);

sqlite3_bind_text(statement, 2, [channel.title_ utf8string], -1, sqlite_transient);

sqlite3_bind_blob(statement, 3, [imagedata bytes], imagelen, sqlite_transient);

sqlite3_bind_int(statement, 4, imagelen);

success = sqlite3_step(statement);

sqlite3_finalize(statement);

if (success == sqlite_error)

nslog(@"insert one channe:id = %@",channel.

id);

return yes; }

【4】資料庫查詢

這裡獲取**中所有的記錄,放到陣列fchannels中。

- (void) getchannels:(nsmutablearray*)fchannels

//查詢結果集中一條一條的遍歷所有的記錄,這裡的數字對應的是列值。

while (sqlite3_step(statement) == sqlite_row)

[fchannels addobject:channel];

[channel release];

}sqlite3_finalize(statement);

}

iOS SQLite資料庫操作

首先介紹一下sqlite資料庫以及為什麼要用ta sqlite是一款輕型的嵌入式資料庫,它占用資源非常的低,在嵌入式裝置中,可能只需要幾百k的記憶體就夠了。它的處理速度比mysql postgresql這兩款著名的資料庫都還快。資料庫的儲存結構和excel很像,以表 table 為單位新建資料庫檔案...

iOS sqlite資料庫的基本操作

介紹 sqlite3 3是版本 是本地系統中的乙個小型資料庫,因為它沒有在資料維護和安全上做過多的操作,所以它儲存處理資料時,非常簡單方便,但是它是不安全和不可靠的,如果一旦誤操作刪除了資料,是沒有辦法恢復的 而sql server 和oracal這種資料庫屬於重量級的,它們都有備份機制,因此它們建...

IOS sqlite資料庫增刪改查

簡單封裝sqlite資料庫操作類 basedb 用於完畢對sqlite的增刪改查。使用前先導入libsqlite3.0.dylib庫 basedb.h sqlitedemo created by 趙超 on 14 8 26.import import sqlite3.h inte ce basedb...