SQLitePersistentObject 的使用

1.下載了SQLitePersistentObject項目包後,將src文件夾下的所有文件複製到開發項目中。

2.在項目TARGETS、Summary、Linked Frameworks and Libraries中添加libsqlite3.dylib動態鏈接庫。

3.在main.m中添加

static void reset_environment()

{

unlink("test.db");

[[SQLiteInstanceManager sharedManagersetDatabaseFilepath:@"test.db"];

}

並在main方法中調用,該方法用於指定sqlite數據庫文件。


4.對象

#import <foundation/foundation.h>

#import "SQLitePersistentObject.h"


@interface PersistablePerson : SQLitePersistentObject 

@property (nonatomic,readwrite, retain) NSString * lastName;

@property (nonatomic,readwrite, retain) NSString * firstName;

@end

----------------------------------------------------------------------

在.m中重載+(NSArray *)indices方法建索引

+(NSArray *)indices

{

 NSArray *index1 = [NSArray arrayWithObject:@"lastName"];

 NSArray *index2 = [NSArray arrayWithObjects:@"lastName", @"firstName", nil];

 NSArray *index3 = [NSArray arrayWithObjects:@"age", @"lastName", @"firstName", nil];

 return [NSArray arrayWithObjects:index1, index2, index3, nil];

}

-----------------------insert-----------------------------------------

PersistablePerson *person = [[PersistablePerson alloc] init];

person.firstName = @"Joe";

person.lastName = @"Smith";

[person save];

-----------------------select with no condition------------------

NSArray *people = [PersistablePerson allObjects];

-----------------------findByPropertyName-----------------------

NSArray *people = [PersistablePerson findByLastName:@"Smith"]

-----------------------select one record-----------------------

PeristablePerson *joeSmith = [PersistablePerson findFirstByCriteria:@"WHERE last_name = 'Smith' AND first_name = 'Joe'"];

-----------------------select records by condition----------------------

NSArray *people = [PersistablePerson findByCriteria:@"WHERE ......."];

--------------------------清空表數據緩存--------------------------------

[PersistablePerson clearCache];

5.心得:

一個對象對應一張表,對象名PeristablePerson對應表名persistable_person,屬性名lastName對應字段名last_name,即在大寫字母前加"_"並將大寫字母替換爲小寫。沒有大寫字母則不變。

屬性名不能加"_",如last_name,否則查詢時屬性值爲nil,即便數據庫中不爲null。

這裏再記錄幾個問題。
1.SQLitePersistentObject在新建一張表時,會自動添加一個pk字段,作爲主鍵,從1開始遞增,值唯一。SQLitePersistentObject提供的許多方法中都依賴於這個字段。如果表是手工建的,沒有添加pk字段,SQLitePersistentObject會自動添加。如果數據對象結構發生變化,如PeristablePerson中新增一個屬性,SQLitePersistentObject會自動修改對就的表結構並添加對應的字段,很強大,很方便。如果用SQLitePersistentObject來查詢視圖,就一定要在視圖中添加pk,否則會報錯。同時要確定pk的值不爲空不重複,否則數據會查不出來。有時候在視圖中指定pk的值將會是很頭痛的問題。
2.修改數據同新增一樣,只不過要設置pk的值,SQLitePersistentObject會以pk爲條件修改對應的數據,如果pk爲空則新增。
3.刪除數據有兩種方式,一種是實例方法如:[people deleteObject],無參數,刪除它自己;另一種是類方法如:[PeristablePerson deleteObject:pk],以pk爲參數刪除對應的數據。


發佈了42 篇原創文章 · 獲贊 7 · 訪問量 34萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章