前几篇已经写完了sqlite与FMDB的基本内容以及衍生出来的知识点,我们这一篇主要讲述FMDB与sqlite在基本使用中的区别,大约需要5-10分钟时间讲述内容,欢迎大家指正。
基本使用区别
1.数据库的 *** 作对象
(1)sqlite通过sqlite3
sqlite3 *_db;
(2)FMDB方式
FMDatabase *db;
2.打开数据库方式
(1)sqlite方式
- (voID)openDB{ //获取数据库文件路径 Nsstring *doc = [NSSearchPathForDirectorIEsInDomains(NSdocumentDirectory,NSUserDomainMask,YES) lastObject]; Nsstring *filename = [doc stringByAppendingPathComponent:@"students.sqlite"]; //将OC字符串转换为c语言的字符串 const char *cfilename = filename.UTF8String; //打开数据库文件(如果数据库文件不存在,那么该函数会自动创建数据库文件) int result = sqlite3_open(cfilename,&_db); if (result == sqlITE_OK) {//打开成功 NSLog(@"成功打开数据库"); }else{ NSLog(@"打开数据库失败"); }}
(2)FMDB方式
- (voID)openDB{ //1、获取数据库文件路径 Nsstring *doc = [NSSearchPathForDirectorIEsInDomains(NSdocumentDirectory,YES) lastObject]; Nsstring *filename = [doc stringByAppendingPathComponent:@"students.sqlite"]; //2、获取数据库连接 _db = [FMDatabase databaseWithPath:filename]; //3、打开数据库连接 if ([_db open]) { NSLog(@"打开数据库成功"); }else{ NSLog(@"打开数据库失败"); }}
3.创建表格
(1)sqlite方式
- (voID)createtable{ //创建表 const char *sql = "CREATE table IF NOT EXISTS t_student(ID integer PRIMARY KEY autoINCREMENT,name text NOT NulL,age integer NOT NulL);"; char *errmsg= NulL; int result = sqlite3_exec(_db,sql,NulL,&errmsg); if (result==sqlITE_OK) { NSLog(@"创建表成功"); }else{ NSLog(@"创建表失败---%s",errmsg); }}
(2)FMDB方式
- (voID)createtable{ BOol result = [_db executeUpdate:@"CREATE table IF NOT EXISTS t_student (ID integer PRIMARY KEY autoINCREMENT,age integer NOT NulL);"]; if (result) { NSLog(@"创建表格成功"); }else{ NSLog(@"创建表格失败"); }}
4.插入数据
(1)sqlite方式
- (voID)insertData{ //插入数据 for (int i=0; i<10; i++) { //拼接SQL语句 Nsstring *name = [Nsstring stringWithFormat:@"yixiangboy--%d",arc4random_uniform(100)]; int age = arc4random_uniform(20)+10; Nsstring *sql = [Nsstring stringWithFormat:@"INSERT INTO t_student (name,age) VALUES (‘%@‘,%d);",name,age]; //执行SQL语句 char *errmsg = NulL; sqlite3_exec(_db,sql.UTF8String,&errmsg); if (errmsg) {//如果有错误信息 NSLog(@"插入数据失败--%s",errmsg); }else{ NSLog(@"插入数据成功"); } }}
(2)FMDB方式
- (voID)insertData{ for (int i=0; i<10; i++) { Nsstring *name = [Nsstring stringWithFormat:@"yixiang-%d",arc4random_uniform(100)]; int age = arc4random_uniform(20)+10; BOol result = [_db executeUpdate:@"INSERT INTO t_student (name,age) VALUES (?,?);",@(age)]; if (result) { NSLog(@"插入成功"); }else{ NSLog(@"插入失败"); } }}
5.删除数据
(1)sqlite方式
- (voID)deleteData{ //删除age小于15的数据 Nsstring *sql = [Nsstring stringWithFormat:@"DELETE FROM t_student WHERE age<15"]; char *errmsg = NulL; sqlite3_exec(_db,&errmsg); if (errmsg) { NSLog(@"删除数据失败"); }else{ NSLog(@"删除数据成功"); }}
(2)FMDB方式
- (voID)deleteData{ BOol result = [_db executeUpdate:@"DELETE FROM t_student WHERE age<15"]; if (result) { NSLog(@"删除成功"); }else{ NSLog(@"删除失败"); }}
6.更新数据
(1)sqlite方式
- (voID)updateData{ //大于20岁的都置为20岁 Nsstring *sql = [Nsstring stringWithFormat:@"UPDATE t_student set age=20 WHERE age>20"]; char *errmsg = NulL; sqlite3_exec(_db,&errmsg); if (errmsg) { NSLog(@"更新数据失败"); }else{ NSLog(@"更新数据成功"); }}
(2)FMDB方式
- (voID)updateData{ BOol result = [_db executeUpdate:@"UPDATE t_student set age=20 WHERE age>20"]; if (result) { NSLog(@"更新成功"); }else{ NSLog(@"更新失败"); }}
7.查询数据
(1)sqlite方式
- (voID)queryData{ const char *sql = "SELECT ID,age FROM t_student WHERE age<20"; sqlite3_stmt *stmt = NulL; //进行查询前的准备工作 if(sqlite3_prepare_v2(_db,-1,&stmt,NulL)==sqlITE_OK){//SQL语句没有问题 NSLog(@"查询语句没有问题"); //每调用一次sqlite3_step函数,stmt就会指向下一条记录 while (sqlite3_step(stmt)==sqlITE_ROW) {//找到一条记录 //取出数据 //(1)取出第0个字段的值(int) int ID=sqlite3_column_int(stmt,0); //(2)取出第一列字段的值(text) const unsigned char *name = sqlite3_column_text(stmt,1); //(3)取出第二列字段的值(int) int age = sqlite3_column_int(stmt,2); printf("%d %s %d\n",ID,age); } }else{ NSLog(@"查询语句有问题"); }}
(2)FMDB方式
- (voID)queryData{ FMResultSet *resultSet = [_db executequery:@"SELECT * FROM t_student WHERE age > ?",@(20)]; while ([resultSet next]) { int ID = [resultSet intForColumn:@"ID"]; Nsstring *name = [resultSet stringForColumn:@"name"]; int age = [resultSet intForColumn:@"age"]; NSLog(@"%d %@ %d",age); }}
以上就是sqlite在基本使用上与FMDB的区别,内容比较简短,但还是比较清晰的,希望对大家有所帮助,下一篇将讲述苹果官方自带的CoreData数据库。
总结以上是内存溢出为你收集整理的SQLite与FMDB使用中区别全部内容,希望文章能够帮你解决SQLite与FMDB使用中区别所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)