今天從早上9點,一直在看fmdb,知道中午11:40。我的效率是不是很低下。中間也碰到了幾個小bug。
雖然做了乙個小demo,但是覺得還比不上在專案中使用中鍛鍊的多,先暫且一總結。
引入到專案中;
新增庫;
新建專案,開始使用
下面我們就一條條地說:
fmdb裡面的『fmdb』,引入到專案中,其他的可以不要;
在link binary with libraries 裡面,引入libsqlite3.dylib;
在viewcontroller裡面,引入標頭檔案
#import #import "fmdb.h"
準備工作已經完畢,我們正式開始寫**,首先,我們要明白的是:fmdb,是封裝sqlite了,sqlite是用c語言寫的,我們這裡面,也要用到c語言。既然是sqlite,那自然會涉及到增刪改查,我們就仔細說說這幾個功能。
1.在進行增刪改查之前,我們要先建立乙個資料庫,這樣我們才能操作:
//取得document路徑nsstring * documentpath = [nssearchpathfordirectoriesindomains(nsdocumentdirectory, nsuserdomainmask, yes)objectatindex:0];
nslog(@"dbpath = %@",dbpath);
//建立資料庫
/**1、當資料庫檔案不存在時,fmdb會自己建立乙個。
2、如果你傳入的引數是空串:@"" ,則fmdb會在臨時檔案目錄下建立這個資料庫,資料庫斷開連線時,資料庫檔案被刪除。
3、如果你傳入的引數是 null,則它會建立乙個在記憶體中的資料庫,資料庫斷開連線時,資料庫檔案被刪除。
*/fmdatabase * db = [fmdatabase databasewithpath:dbpath];
這樣資料庫檔案就建立完了,而且還能保證它能夠開啟,一般情況下都是能夠開啟的:
if (![db open]) else
2.資料庫建立完之後,我們就要建乙個表了,用來分門別類存放屬性
//建立tableif ([db open]) else
[db close];
}else
3.插入資料
/*** -插入資料
插入資料跟前面一樣,用executeupdate後面加語法就可以了。比較不同的是,因為插入的資料會跟objective-c的變數有關,所以在string裡使用?號來代表這些變數。
*/if ([db open]) else
[db close];
}
4.更新資料
一切不是select命令的命令都視為更新。這包括 create, update, insert,alter,commit, begin, detach, delete, drop, end, explain, vacuum, and replace (等)。
簡單來說,只要不是以select開頭的命令都是update命令。
執行更新返回乙個bool值。yes表示執行成功,否則表示有那些錯誤 。你可以呼叫 -lasterrormessage 和 -lasterrorcode方法來得到更多資訊。
if ([db open]) else}
5.查詢
if ([db open])}
6.刪除
if ([db open]) else[resultset close];
}
7.建立佇列
如果應用中使用了多執行緒運算元據庫,那麼就需要使用fmdatabasequeue來保證執行緒安全了。 應用中不可在多個執行緒中共同使用乙個fmdatabase物件運算元據庫,這樣會引起資料庫資料混亂。 為了多執行緒運算元據庫安全,fmdb使用了fmdatabasequeue,使用fmdatabasequeue很簡單,首先用乙個資料庫檔案位址來初使化fmdatabasequeue,然後就可以將乙個閉包(block)傳入indatabase方法中。 在閉包中運算元據庫,而不直接參與fmdatabase的管理。
//建立佇列fmdatabasequeue * databasequeue = [fmdatabasequeue databasequeuewithpath:dbpath];
[databasequeue indatabase:^(fmdatabase *db)
}];
fmresultset 提供了很多方法來獲得所需的格式的值:
intforcolumn:
longforcolumn:
longlongintforcolumn:
boolforcolumn:
doubleforcolumn:
stringforcolumn:
dataforcolumn:
datanocopyforcolumn:
utf8stringforcolumnindex:
objectforcolumn:
測試了一下LINQ寫的Quick Sort效能
昨晚看到乙個帖子,說的是三行 實現快速排序,文中實現quick sort 如下 public static ienumerable quicksort ienumerable list where t icomparable 不由想起老趙兩年前 正好整整兩年傳統的的quick sort演算法摘自維基...
測試了一下LINQ寫的Quick Sort效能
昨晚看到乙個帖子,說的是三行 實現快速排序,文中實現quick sort 如下 public static ienumerable quicksort ienumerable list where t icomparable 不由想起老趙兩年前 正好整整兩年 的乙個帖子 趣味程式設計 函式式鍊錶的快...
shell命令程式設計小例 試了一下很好
程式目的 設計乙個shell程式,分別實現1 鎖定終端螢幕,2 選擇檔案編輯器編輯檔案,3 啟動您所想要啟動的工具,4 使用c檔案輸出當地時間 四個功能 程式分析 鎖定終端螢幕過程需要忽略sighup,sigint,sigquit,sigterm,sigtstp訊號,呼叫trap命令,然後設定乙個密...