FMDB的介绍

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

FMDB方法的介绍

 

1.首先我们需要创建一个FMDatabase实例:

+(FMDatabase*)DataBaseSigonInstance

{

    //数据库初始化

    NSString *homeDir =NSHomeDirectory();

    //NSLog(@"%@",homeDir);

NSString *dbPath = [homeDirstringByAppendingPathComponent:@"Library/Caches/FMDatabaseDemo.db"];

    FMDatabase *database = [FMDatabasedatabaseWithPath:dbPath];

    

   return database;

}

 

2.接下来就是需要创建一个数据表了:

//打开数据库

    FMDatabase *db = [FMDataBasePathDataBaseSigonInstance];

    

   if (!db.open)

    {

        NSLog(@"fail to open database");

        

       return;

    }

    db.logsErrors =YES;//开启错误日志

    [db executeUpdate:@"CREATE TABLE IF NOT EXISTS studentTable(name varchar,age integer,totalScore float)"];

    [dbclose];

3.添加数据:

FMDatabase *db = [FMDataBasePathDataBaseSigonInstance];

       if (!db.open)

        {

            NSLog(@"fail to open database");

            

           return;

        }      

       //获得数据

        student.name = ((UITextField*)[alertViewviewWithTag:TEXTFIELD_TAG]).text;

        student.age = [((UITextField*)[alertViewviewWithTag:TEXTFIELD_TAG + 1]).textintValue];

        student.totalScore = [((UITextField*)[alertViewviewWithTag:TEXTFIELD_TAG + 2]).textfloatValue];       

        db.logsErrors =YES;

        [db executeUpdate:@"insert into studentTable(name,age,totalScore)values(?,?,?)",student.name,[NSNumbernumberWithInt:student.age],[NSNumbernumberWithFloat:student.totalScore]];//注意参数必须是对象

        [dbclose];

4.删除数据:

    FMDatabase *db = [FMDataBasePathDataBaseSigonInstance];

   if (!db.open)

    {

        NSLog(@"fail to open!");

       return;

    }

    db.logsErrors =YES;

    NSString *delDataSqlStr =@"delete from studentTable";

    [dbexecuteUpdate:delDataSqlStr];

    [dbclose];

 

5.修改数据:

 FMDatabase *db = [FMDataBasePathDataBaseSigonInstance];

   if (!db.open)

    {

        NSLog(@"fail to open!");

       return;

    }

    db.logsErrors =YES;

    [db executeUpdate:@"update studentTable set totalScore = 100"];

    [dbclose];

查询数据:

 FMDatabase *db = [FMDataBasePathDataBaseSigonInstance];

   if (!db.open)

    {

        NSLog(@"fail to open!");

       return;

    }

    db.logsErrors =YES;

    FMResultSet *rs = [dbexecuteQuery:@"select * from studentTable"];

     NSMutableArray *studentArr = [[NSMutableArrayalloc]init];

       while ([rsnext])

    {

        NSMutableDictionary *dic = [[NSMutableDictionaryalloc]init];

        

        [dic setValue:[rsstringForColumn:@"name"]forKey:@"name"];

        [dic setValue:[NSNumbernumberWithInt:[rsintForColumn:@"age"]]forKey:@"age"];

        [dic setValue:[NSNumbernumberWithDouble:[rsdoubleForColumn:@"totalScore"]]forKey:@"totalScore"];  

        [studentArraddObject:dic];

        [dicrelease];

       }

    

   for (int count = 0; count< [studentArrcount]; count++)

    {

       NSLog(@"sudent:%@  age:%@  totalScore:%@",[[studentArrobjectAtIndex:count]objectForKey:@"name"],[[studentArrobjectAtIndex:count]objectForKey:@"age"],[[studentArrobjectAtIndex:count]objectForKey:@"totalScore"]);

    }

    

    [studentArrrelease];

    

    [dbclose];

 

 

上面的都是一些增删改查的用法

 

下面我们再来看看FMDatabase 和 FMResultSet

 

FMDatabase:(主要用到这两个)

- (BOOL)executeUpdate:(NSString*)sql, ...;   这个是用于执行无结果的sql语句的

 

- (FMResultSet *)executeQuery:(NSString*)sql, ...;  这个是用于执行有结果的sql语句的

 

FMResultSet:

 

- (BOOL)next; 结果集的下一个

 

- (int)columnCount; 结果集的字段个数

 

- (int)intForColumn:(NSString*)columnName; 获取整形字段的信息(下面的都是同理)

- (int)intForColumnIndex:(int)columnIdx;

 

- (long)longForColumn:(NSString*)columnName;

- (long)longForColumnIndex:(int)columnIdx;

 

- (longlongint)longLongIntForColumn:(NSString*)columnName;

- (longlongint)longLongIntForColumnIndex:(int)columnIdx;

 

- (unsignedlonglong int)unsignedLongLongIntForColumn:(NSString*)columnName;

- (unsignedlonglong int)unsignedLongLongIntForColumnIndex:(int)columnIdx;

 

- (BOOL)boolForColumn:(NSString*)columnName;

- (BOOL)boolForColumnIndex:(int)columnIdx;

 

- (double)doubleForColumn:(NSString*)columnName;

- (double)doubleForColumnIndex:(int)columnIdx;

 

- (NSString*)stringForColumn:(NSString*)columnName;

- (NSString*)stringForColumnIndex:(int)columnIdx;

 

- (NSDate*)dateForColumn:(NSString*)columnName;

- (NSDate*)dateForColumnIndex:(int)columnIdx;

 

- (NSData*)dataForColumn:(NSString*)columnName; 获取二进制数据(图片可以使用这个)

- (NSData*)dataForColumnIndex:(int)columnIdx;

转载于:https://my.oschina.net/fadoudou/blog/704289

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/543010.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网络克隆软件_网文生成器,克隆的是骗钱“病毒”

文章克隆器页面。图据北京晚报如今不论男女老少&#xff0c;多半喜欢用手机收集信息、浏览自己关注的话题。有的时候&#xff0c;人们会发现&#xff0c;不少亲朋发来的链接或者公众号推送的文章&#xff0c;长得特别像&#xff0c;但多少有那么些微不同。其实&#xff0c;不是…

使用python 对图片进行水印,保护自己写的文章

1&#xff0c;关于文章被爬 说起来挺桑心的&#xff0c;好不容易写的文章&#xff0c;被爬走。 用个搜索引擎搜索都不是在第一位&#xff0c;写的文章全给这些网站提供流量了。 这种网站还居多广告。 还是抱怨少点吧。csdn对于这些事情也是无所作为啊。 最起码的防盗链也不…

android layout_width 属性,android:layout_weight属性详解

在android开发中LinearLayout很常用&#xff0c;LinearLayout的内控件的android:layout_weight在某些场景显得非常重要&#xff0c;比如我们需要按比例显示。android并没用提供table这样的控件&#xff0c;虽然有TableLayout&#xff0c;但是它并非是我们想象中的像html里面的t…

angular的$http发送post,get请求无法传送参数的问题

2019独角兽企业重金招聘Python工程师标准>>> 用$http进行异步请求的时候发现了一个奇怪的事情&#xff0c;用$http.post(url,data)的方法进行请求&#xff0c;后台死活接收不到data的参数&#xff0c;真是百思不得姐啊..... 折腾了老半天才在stackoverflow上找到答案…

怎样解决Word文档图标无法正常显示的问题?

此类问题是由于 Word 程序相关组件损坏导致&#xff0c;可以通过下面的方案来解决&#xff1a;步骤/方法按键盘上的 Windows 徽标健 R 键&#xff0c;输入 regedit&#xff0c;按回车键。&#xff08;若弹出用户账户控制窗口&#xff0c;请允许以继续&#xff09;对于 Word 200…

MathType与Origin是怎么兼容的

MathType作为一款常用的公式编辑器&#xff0c;可以与很多的软件兼容使用。Origin虽然是一款专业绘图与数据分析软件&#xff0c;但是在使用过程中也是可以用到MathType。它可以帮助Origin给图表加上标签&#xff0c;或者在表格中增加公式标签。但是一些用户朋友对这个不能不是…

AutoBookmark Adobe Acrobat快速自动批量添加书签/目录

前言 解决问题&#xff1a;Adobe Acrobat快速自动批量添加书签/目录, 彻底告别手动添加书签的烦恼 AutoBookmark 前言1 功能简介2 实现步骤2.1 下载插件2.2 将插件复制到Acrobat文件夹下2.3 自动生成书签 1 功能简介 我们在查看PDF版本的论文或者其他文件的时候, 虽然相比较于…

Python调用微博API获取微博内容

一&#xff1a;获取app-key 和 app-secret 使用自己的微博账号登录微博开放平台(http://open.weibo.com/)&#xff0c;在微博开放中心下“创建应用”创建一个应用&#xff0c;应用信息那些随便填&#xff0c;填写完毕后&#xff0c;不需要提交审核&#xff0c;需要的只是那个ap…

鸿蒙系统hdc,HDC2020有看头:要揭开鸿蒙系统和EMUI11神秘面纱?

IFA2020算是HDC2020的预热吧&#xff0c;一个是9月2日在德国柏林举办的消费电子展&#xff0c;一个是在松山湖举办的华为开发者大会&#xff0c;二者的目的都一样&#xff0c;但也有一丝不同&#xff0c;IFA是为了让老外了解HMS、了解华为的智慧生态&#xff0c;而HDC2020就是要…

Java String 学习笔记 (一)

2019独角兽企业重金招聘Python工程师标准>>> ###String 简介 String 并非java的8大基本数据类型之一。 java中基本数据类型存储在栈内存中。而String不是&#xff0c;新new的String 对象存储在堆内存中。而字符串存储在常量池中。String对象的引用存储中栈内存中。 …

note2 android4.3,玩家们动手吧 Note2安卓4.3固件已泄漏

【PConline 资讯】最近各个牌子的安卓机迎来了升级安卓4.3的大潮&#xff0c;现在三星Galaxy Note2的安卓4.3固件已经泄漏出来了。实际上&#xff0c;此前三星官方已经确认&#xff0c;Galaxy Note3可以获得官方的安卓4.3固件升级&#xff0c;但具体日期没有确定&#xff0c;只…

【JUnit 报错】 method initializationerror not found:JUnit4单元测试报错问题

今天是用JUnit测试一段代码&#xff0c;报错method initializationerror not found:&#xff1a;出现如下问题&#xff1a; 双击这个就显示出现如下的错误&#xff1a; 查询网上&#xff0c;说是junit版本的问题&#xff1a; 那我就不使用JUnit这个Libernary了&#xff0c;下载…

将byte数组以html形式输出到页面,java 数组显示到html

java 数组显示到html[2021-02-05 01:08:54] 简介:php去除nbsp的方法&#xff1a;首先创建一个PHP代码示例文件&#xff1b;然后通过“preg_replace("/(\s|\&nbsp\;| |\xc2\xa0)/", " ", strip_tags($val));”方法去除所有nbsp即可。推荐&#xff1a;…

windows 下 git 禁用 CRLF 转换 LF

2019独角兽企业重金招聘Python工程师标准>>> windows中的换行符为 CRLF&#xff0c; 而在linux下的换行符为LF&#xff0c;所以在执行add . 时出现提示&#xff0c;解决办法&#xff1a; 删除根目录 .git 文件夹禁用自动转换 > git config --global core.autocrl…

使用gulp构建前端(三)

为什么80%的码农都做不了架构师&#xff1f;>>> 使用gulp构建前端&#xff08;三&#xff09; 紧接着上述文章内容&#xff0c;开始新的插件的使用 插件三 gulp-clean-css&#xff0c;作用减小文件大小&#xff0c;并给引用url添加版本号避免缓存&#xff0c;一个需…

网站html标签如何优化,网站HTML标签优化教程

真正需要SEOer掌握并经常使用的HTML标签也就那么几个&#xff0c;本小节丈哥seo带来的是页面HTML标签优化。title标签 – 标题标签1)title标签用法网站SEOHTML标签优化教程 – 丈哥seo2)标题标签的作用关于网站标题写法与操作技巧有许多&#xff0c;需要怎么优化标题的朋友可以…

html 轮播图的鼠标事件,这是图片轮播的代码 html+css,怎么加上鼠标悬停移出继续功能?...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼.one {position: absolute;width: 500px;height: 400px;overflow: hidden;}.one_cantent img {width: 500px;height: 300px;float: left;}.one_cantent {width: 2500px;height: 400px;position: absolute;left: 0px;animation-name…

微软Azure云之企业Exchange 2016部署12—配置负载平衡

上几节我们把Exchange2016邮箱系统配置完毕了&#xff0c;本节我们来配置开通需要对外的端口&#xff0c;并对这些端口进行负载均衡配置&#xff0c;如下图红框所示&#xff1a;1.Exchange服务端口Exchange2016需要对外开通以下的端口&#xff0c;来对外提供不同的服务&#xf…

centos下升级jdk版本

2019独角兽企业重金招聘Python工程师标准>>> 由于安装的centos系统&#xff0c;自带了jdk1.6和1.7的版本&#xff0c;介于在平时开发&#xff0c;用了1.8.为了保持开发环境的一致&#xff0c;故此需要升级&#xff0c;放办maven打包等工具的使用。 查看系统的jdk版本…

语言之输出png图片_什么是PPML?如何输出PPML文档?

什么是PPML&#xff1f;PPML是由PODi联盟的几个会员公司共同开发出一种个性化印刷标识语言&#xff0c;这是一种全新的、基于XML(可扩展标识语言&#xff09;技术的印刷行业标准语言&#xff0c;得到越来越多的业内人士关注。PPML采用XML作为句法基础&#xff0c;使PPML其他很多…