SQLite与FMDB使用中区别

SQLite与FMDB使用中区别,第1张

概述前几篇已经写完了SQLite与FMDB的基本内容以及衍生出来的知识点,我们这一篇主要讲述FMDB与SQLite在基本使用中的区别,大约需要5-10分钟时间讲述内容,欢迎大家指正。   基本使用区别 1.数据库的 *** 作对象 (1)SQLite通过sqlite3 sqlite3 *_db; (2)FMDB方式 FMDatabase *db;   2.打开数据库方式 (1)SQLite方式 - (void

前几篇已经写完了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使用中区别所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1158811.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存