sqlite 操作 使用FMDB

2021-07-05 06:47:48 字數 2811 閱讀 9745

alter  table   table-name  add column  column-name column-type 

例如在student表中新增一列名為name,型別為varchar:

alter table student add column name varchar;

alter table student drop column name // 該行在sqlite中不能用,sqlite不支援drop
詳見:sqlite在已建立的表中刪除一列
ios中原生的sqlite api在使用上相當不友好,在使用時,非常不便。於是,就出現了一系列將sqlite api進行封裝的庫,例如fmdb、plausibledatabase、sqlitepersistentobjects等,fmdb (

) 是一款簡潔、易用的封裝庫,這一篇文章簡單介紹下fmdb的使用。

fmdb同時相容arc和非arc工程,會自動根據工程配置來調整相關的記憶體管理**。

fmdatabase : 乙個單一的sqlite資料庫,用於執行sql語句。

fmresultset :執行查詢乙個fmdatabase結果集,這個和android的cursor類似。

fmdatabasequeue :在多個執行緒來執行查詢和更新時會使用這個類。

[cpp]view plain

copy

print

?db = [fmdatabase databasewithpath:database_path];  

1、當資料庫檔案不存在時,fmdb會自己建立乙個。

2、 如果你傳入的引數是空串:@"" ,則fmdb會在臨時檔案目錄下建立這個資料庫,資料庫斷開連線時,資料庫檔案被刪除。

3、如果你傳入的引數是 null,則它會建立乙個在記憶體中的資料庫,資料庫斷開連線時,資料庫檔案被刪除。

[cpp]view plain

copy

print

?[db open]  

返回bool型。

[cpp]view plain

copy

print

?[db close]  

除了查詢操作,fmdb資料庫操作都執行

executeupdate方法,這個方法返回bool型。

看一下例子:

[cpp]view plain

copy

print?if

([db open])  else

[db close];  

}[cpp]view plain

copy

print?if

([db open])  else

[db close];  

}[cpp]view plain

copy

print?if

([db open])  else

[db close];  

}[cpp]view plain

copy

print?if

([db open])  else

[db close];  

}  查詢操作使用了

executequery,並涉及到

fmresultset。

[cpp]view plain

copy

print?if

([db open])   

[db close];  

}  fmdb的fmresultset提供了多個方法來獲取不同型別的資料:

如果應用中使用了多執行緒運算元據庫,那麼就需要使用fmdatabasequeue來保證執行緒安全了。 應用中不可在多個執行緒中共同使用乙個fmdatabase物件運算元據庫,這樣會引起資料庫資料混亂。 為了多執行緒運算元據庫安全,fmdb使用了fmdatabasequeue,使用fmdatabasequeue很簡單,首先用乙個資料庫檔案位址來初使化fmdatabasequeue,然後就可以將乙個閉包(block)傳入indatabase方法中。 在閉包中運算元據庫,而不直接參與fmdatabase的管理。

[cpp]view plain

copy

print

?fmdatabasequeue * queue = [fmdatabasequeue databasequeuewithpath:database_path];  

dispatch_queue_t q1 = dispatch_queue_create("queue1"

, null);  

dispatch_queue_t q2 = dispatch_queue_create("queue2"

, null);  

dispatch_async(q1, ^ else

}];  

}  });  

dispatch_async(q2, ^ else

}];  

}  

FMDB對sqlite的操作

首先要先導入第三方類庫fmdatabase 獲得存放資料庫檔案的沙盒位址 nsstring databasefilepath 建立資料庫的操作 void creatdatabase 建立表 void creattable 判斷資料庫是否已經開啟,如果沒有開啟,提示失敗 if dbopen 為資料庫設...

SQLite與FMDB使用中區別

基本使用區別 1.資料庫的操作物件 1 sqlite通過sqlite3 sqlite3 db 2 fmdb方式 fmdatabase db 2.開啟資料庫方式 1 sqlite方式 void opendb else 2 fmdb方式 void opendb else 3.建立 1 sqlite方式 ...

使用FMDB 基本操作

建立,插入,更新和刪除 使用executeupdate方法,而查詢則用executequery 1.例項化fmdatabase paths ios下document路徑,document為ios中可讀寫的資料夾 nsarray paths nssearchpathfordirectoriesindo...