ios(六)sqlite3以及FMDB
来源:互联网 发布:数据结构与算法公开课 编辑:程序博客网 时间:2024/05/20 11:51
SQLite:一种轻量的本地数据库,方便嵌入系统,支持跨平台,根据工作经验来看,无论是Android还是iOS大多都采用SQLite
首先我们需要新建一个数据库,我们给他起名personinfo.sqlite,创建一张叫做person的表,里面有三个字段 name,age,sex。数据库存放在iOS的沙盒文件Document目录下,
#define DBName @"personinfo.sqlite"#define table @"PERSONINFO"#define Name @"Name"#define Age @"Age"#define Sex @"Sex"
//自己命名数据库,返回该数据库地址-(NSString *)DB_path{ NSArray *paths=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documents=[paths objectAtIndex:0]; return [documents stringByAppendingPathComponent:DBName]; //return database_path;}stringByAppendingPathComponent方法:如果文件已经存在,就返回该文件地址,如果没有则新建文件
新建好数据库后,所有数据库的操作,都得先打开数据库,SQLite中使用sqlite3_open方法
// 创建数据库文件,并返回数据库目录 NSString *DB_path=[self DB_path];// 打开数据库 if (sqlite3_open([DB_path UTF8String], &db)!=SQLITE_OK) { //open fail sqlite3_close(db); NSLog(@"open fail"); }
执行无返回数据的sql语句比较方便,只要使用sqlite3_exec即可
//传入sql 执行sql语句,例如insert,delete,-(void)execute_sql:(NSString *)sql{ char *err; if (sqlite3_exec(db,[sql UTF8String], NULL, NULL, &err)!=SQLITE_OK) { sqlite3_close(db); NSLog(@"数据库操作失败"); }else{ NSLog(@"SUCCESS"); }}
但是sqlite3执行有返回数据的时候就比较麻烦
需要先用sqlite3_prepare_v2将sql语句准备好,接着用sqlite_step一条一条读取数据,每条数据可能包含不同数据,也要用sqlite_column_xxx将他们一个一个读取出来
// sqlite3_prepare 将UTF-8格式的SQL语句转换为指向已备语句的指针 if (sqlite3_prepare_v2(db, [sqlQuery UTF8String], -1, &statement, nil) == SQLITE_OK) { while (sqlite3_step(statement) == SQLITE_ROW) { int num = sqlite3_column_int(statement, 0); char *name = (char*)sqlite3_column_text(statement, 1); NSString *nsNameStr = [[NSString alloc]initWithUTF8String:name]; int age = sqlite3_column_int(statement, 2); char *sex = (char*)sqlite3_column_text(statement, 3); NSString *SexStr = [[NSString alloc]initWithUTF8String:sex]; NSLog(@"id:%d name:%s age:%d sex:%s",num,name,age, sex); NSLog(@"id:%d name:%@ age:%d sex:%@",num,nsNameStr,age, SexStr); } }
第三方框架FMDB是对SQLite的一种封装。主要是执行有数据返回的语句时非常方便了
FMDB与SQLite基本类似
首先也是获得数据库(新建数据库就不说了):
//根据数据库路径获得数据库FMDatabase *db=[FMDatabase databaseWithPath:fileName];
其次操作数据库必需先打开
//打开数据库[db open];
无数据返回的执行语句
数据库增删改等操作:
除了查询操作,FMDB数据库操作都执行executeUpdate方法,这个方法返回BOOL型。
[db executeUpdate:sql];
查询语句都使用executeQuery
// 1.执行查询语句 FMResultSet *resultSet = [db executeQuery:@"SELECT * FROM t_student"]; // 2.遍历结果 while ([resultSet next]) { int ID = [resultSet intForColumn:@"id"]; NSString *name = [resultSet stringForColumn:@"name"]; int age = [resultSet intForColumn:@"age"]; NSLog(@"%d %@ %d", ID, name, age); }
0 0
- ios(六)sqlite3以及FMDB
- IOS FMDB操作SQLite3
- iOS-SQLite3和FMDB使用
- iOS-SQLite3和FMDB使用
- iOS-FMDB和SQLite3使用
- iOS 数据库-SQLite3 CoreData FMDB
- SQLite3以及FMDB的简单实用
- IOS中使用FMDB操作sqlite3
- ios数据库sqlite3第三方框架FMDB
- iOS基础——数据操作之Sqlite3、FMDB
- coreData,sqlite3,fmdb
- sqlite3 FMDB的使用
- iOS FMDB
- iOS FMDB
- iOS-FMDB
- iOS FMDB
- iOS FMDB
- iOS-FMDB
- mysql limit 分页查询优化
- Eclipse启动Tomcat6时出现'Starting Tomcat v6.0 Server
- ZipUtil
- Andorid自定义圆形渐变色进度条的从实现到开源
- Maven学习总结(七)——eclipse中使用Maven创建Web项目
- ios(六)sqlite3以及FMDB
- PySide学习笔记第八章-事件和信号
- 几秒前,几分钟前,几小时前,几天前,几月前,几年前的java实现
- Maven学习总结(八)——使用Maven构建多模块项目
- SQL-创建和操纵表
- 内存管理四之工作原理
- Maven学习总结(九)——使用Nexus搭建Maven私服
- 百度登录算法分析和实现(上 - 分析篇)
- PHP代码被浏览器强制注释的问题