首页 > 代码库 > [IOS SQLITE的使用方式]

[IOS SQLITE的使用方式]

1.把数据库文件localdata.db放入工程,并建立bundle(在build phases里)

2.创建新的类,用于本地SQLite查询. LocalDB.m(.h就不说了,保证每个.m里要外部调用的函数都在.h里做好接口就好)

3.LocalDB.m: createDB函数

因为工程里的Bundle文件无法直接使用(只能直接使用document里的文件),所以第一次使用sqlite文件要把它复制到document文件夹。

-(void)createDB{    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);    //该方法可用来显示DOCUMENT文件夹内的文件信息    NSString *documents = [paths objectAtIndex:0];        database_path = [documents stringByAppendingPathComponent:DBNAME];//获取数据库文件的地址,不存在就会创建    NSLog(@"数据库地址是:%@",database_path);    //根据上面拼接好的路径 dbFilePath ,利用NSFileManager 类的对象的fileExistsAtPath方法来检测是否存在,返回一个BOOL值    //1. 创建NSFileManager对象  NSFileManager包含了文件属性的方法    NSFileManager *fm = [NSFileManager defaultManager];        //2. 通过 NSFileManager 对象 fm 来判断文件是否存在,存在 返回YES  不存在返回NO    BOOL isExist = [fm fileExistsAtPath:database_path];    //NSLog(@"isExist =%d",isExist);    //如果不存在 isExist = NO,拷贝工程里的数据库到Documents下    if (!isExist)    {        //拷贝数据库        //获取工程里,数据库的路径,因为我们已在工程中添加了数据库文件,所以我们要从工程里获取路径        NSString *backupDbPath = [[NSBundle mainBundle]                                  pathForResource:@"localdata"                                  ofType:@"db"];        BOOL cp = [fm copyItemAtPath:backupDbPath toPath:database_path error:nil];        NSLog(@"找到Bundle文件:%@,已拷贝至Document",backupDbPath);    }        if (sqlite3_open([database_path UTF8String], &db) != SQLITE_OK) {        sqlite3_close(db);        NSLog(@"数据库打开失败");    }        sqlite3_close(db);}

4.简单的查询语句(我建立了一个dbversion的table,然后字段为dbversion,值为1.0,用于以后的更新)

这是一个最简单的sqlite的查询语句用法。

-(NSString *)selectdbversion{    NSString * version;        if (sqlite3_open([self->database_path UTF8String], &db) == SQLITE_OK){                NSString *sqlQuery =@"SELECT dbversion FROM dbversion";                sqlite3_stmt * statement;                if (sqlite3_prepare_v2(db, [sqlQuery UTF8String], -1, &statement, nil) == SQLITE_OK) {                        while (sqlite3_step(statement) == SQLITE_ROW) {                                char *row0 = (char*)sqlite3_column_text(statement, 0);                version = [[NSString alloc]initWithUTF8String:row0];            }        }else        {            NSLog( @"Failed from sqlite3_prepare_v2. Error is:  %s", sqlite3_errmsg(db) );        }    }    return version;}

5.外部调用方式:

实例化localDB对象就可以了。

    LocalDB *newdb=[LocalDB alloc];    [newdb createDB];    NSString *version=[newdb selectdbversion];    NSLog(@"%@",version);

 

[IOS SQLITE的使用方式]