一个SQLite3的小例子
写了一个比较简单的SQLite3的简单demo只实现了增加 更新 删除 获取全部数据 查找 数据库部分有详细注释 界面也比较简陋主要是实现一下数据库部分
资源地址:http://download.csdn.net/detail/decemberd/3899232
部分代码如下: //获取document目录并返回数据库目录 - (NSString*)dataFilePath{
NSArray*paths =NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES); NSString*documentsDirectory = [pathsobjectAtIndex:0]; return[documentsDirectorystringByAppendingPathComponent:kFilename];
}
//创建,打开数据库 - (BOOL)openDB {
//获取数据库路径 NSString*path = [selfdataFilePath]; //文件管理器 NSFileManager*fileManager = [NSFileManagerdefaultManager]; //判断数据库是否存在 BOOLfind = [fileManagerfileExistsAtPath:path];
//如果数据库存在,则用sqlite3_open直接打开(不要担心,如果数据库不存在sqlite3_open会自动创建) if(find) {
NSLog(@"Database file have already existed.");
//打开数据库,这里的[path UTF8String]是将NSString转换为C字符串,因为SQLite3是采用可移植的C(而不是 //Objective-C)编写的,它不知道什么是NSString. if(sqlite3_open([pathUTF8String],&_database) !=SQLITE_OK) {
//如果打开数据库失败则关闭数据库 sqlite3_close(self._database); NSLog(@"Error: open database file."); returnNO; }
//创建一个新表 [selfcreateTestList:self._database];
returnYES; } //如果发现数据库不存在则利用sqlite3_open创建数据库(上面已经提到过),与上面相同,路径要转换为C字符串 if(sqlite3_open([pathUTF8String],&_database) ==SQLITE_OK) {
//创建一个新表 [selfcreateTestList:self._database]; returnYES; }else{ //如果创建并打开数据库失败则关闭数据库 sqlite3_close(self._database); NSLog(@"Error: open database file."); returnNO; } returnNO; }
//创建表 - (BOOL) createTestList:(sqlite3*)db {
//这句是大家熟悉的SQL语句 char*sql ="create table if not exists testTable(ID INTEGER PRIMARY KEY AUTOINCREMENT,testID int,testValue text)";
sqlite3_stmt*statement; //sqlite3_prepare_v2接口把一条SQL语句解析到statement结构里去.使用该接口访问数据库是当前比较好的的一种方法 NSIntegersqlReturn =sqlite3_prepare_v2(_database,sql,-1,&statement,nil); //第一个参数跟前面一样,是个sqlite3 *类型变量, //第二个参数是一个sql语句。 //第三个参数我写的是-1,这个参数含义是前面sql语句的长度。如果小于0,sqlite会自动计算它的长度(把sql语句当成以 |