数据存储小结(三)

2014-11-24 03:13:25 · 作者: · 浏览: 17
entityDescription];

// 操作语句的条件

NSPredicate *pred = [NSPredicate predicateWithFormat:@"PREDICATE_SECTION"];

[request setPredicate:pred];

NSManagedObject *manageObject = nil;

// 执行操作,得到多条具体数据

NSArray *objects = [managedObjectContext executeFetchRequest:request error:&error];

if (objects == nil) {

// 出错

}

if ([objects count] > 0)

// 多条,取第一条

manageObject = [objects objectAtIndex:0];

else

// 没有相应的,就创建

manageObject = [NSEntityDescription

insertNewObjectForEntityForName:@"TABLE_NAME"

inManagedObjectContext:managedObjectContext];

// 改变她的一个字段的值

[manageObject setValue:@"VALUE" forKey:@"ONE_FIELD_NAME_OF_THE_TABLE"];

[request release];

// 保存,结束

[managedObjectContext save:&error];

(四).SQLite

引入SQLite库,加入头文件,使用C API操作.繁琐的地方在于只能存储c数据格式,需要来回转换.

过程示例:

// 声明数据库

sqlite3 *database;

// 打开

if (sqlite3_open("数据库文件路径", &database) != SQLITE_OK) {

sqlite3_close(database);

// 出错

}

char *errorMsg;

// 执行无返回语句

if (sqlite3_exec (database, "增删改创语句",NULL, NULL, &errorMsg) != SQLITE_OK) {

sqlite3_close(database);

// 出错

}

sqlite3_stmt *statement;

// 执行查询语句

if (sqlite3_prepare_v2(database, "查询语句",-1, &statement, nil) == SQLITE_OK) {

// 遍历结果

while (sqlite3_step(statement) == SQLITE_ROW) {

int row = sqlite3_column_int(statement, 0);

// 第一列数据

char *rowData = (char *)sqlite3_column_text(statement, 1);

}

// 结束遍历

sqlite3_finalize(statement);

}

// 关闭数据库

sqlite3_close(database);

参考1:http://stackoverflow.com/questions/2985054/what-exactly-is-a-fetched-property

作者 v2m