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为参数删除对应的数据。


你可能感兴趣的:(SQLitePersistentObject 的使用)