1.首先建表:在SQCWorld这个项目中,需要的数据有首页展示和详细页数据,目前就这两个了。
2.首页展示的字段主要有:标题,图片,ID_main,创建时间;(ID_main的作用是筛选详细页的信息,作为外键)
3.详细页的字段主要有:文字,图片,ID_main,创建时间;
4.根据需要可以得出结论:建两个表,其实就是和parse的表一样了,呵呵。
5.第一步指定一个数据库路径:
#define PATH_OF_DOCUMENT [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]
NSString * doc_two = PATH_OF_DOCUMENT;
NSString * path_two = [doc_two stringByAppendingPathComponent:@"detail.sqlite"];
self.dbPath_two = path_two;
6.第二步判断这个路径下有没有数据库,没有的话就创建,并且建表(在这里可以建多个表,但是路径是不会变的,刚才我弄错了,我还以为是一个路径一个表,结果错了)
if ([fileManager fileExistsAtPath:self.dbPath_two] == NO) {
FMDatabase *dataBase = [FMDatabase databaseWithPath:self.dbPath_two];
if ([dataBase open]) {
NSString *sql = @"CREATE TABLE main (id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL , title VARCHAR,image VARCHAR,mainID VARCHAR,createtime VARCHAR)";
BOOL result = [dataBase executeUpdate:sql];
if (!result) {
NSLog(@"create failed");
}else {
NSLog(@"succeed create table");
}
NSString *sql_two = @"CREATE TABLE detail (id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL , description VARCHAR,image VARCHAR,mainID VARCHAR)";
BOOL result_two = [dataBase executeUpdate:sql_two];
if (!result_two) {
NSLog(@"create failed");
}else {
NSLog(@"succee create table_two");
}
[dataBase close];
}else {
NSLog(@"failed open dataBase");
}
}
6.模拟插入数据:由于需要缓存图片,而图片缓存我是这样做的,首先确定一个全局唯一的path,然后把图片的data写入到这个path里面就是writeToFile这个方法。而这个path就以main_id的形式来命名,id就是parse传过来的这条数据的唯一id。最后在数据库中插入数据的时候就把这个path插入即可,当读的时候就用imageWithContentsOfFile这个方法就行了。其它的文字数据就以对应的字段插入就去就好了。