FMDB常用的数据类型以及sql语句

【iOS】—— FMDB的基础用法 一.基本介绍: 1.简介: 由于iOS中原生的 SQLite API 使用时非常不方便 ,于是就出现了一系列将 SQLite API 进行封装的库,例如FMDB、PlausibleDatabase、sqlitepersistentobjects等,FMDB是一款简洁易用、轻量级的封装库。 2.什么是FMDB: FMDB是iOS平台的SQLite数据库框架。 FMDB以OC的方式封装了SQLite的C语言API。 3.FMDB同时兼容ARC和非ARC工程,会自动根据工程配置来调整相关的内存管理代码。 4.FM 阅读详情

SQLite数据库的基本数据类型:

整数数据类型:

(1)integer :整形数据,大小为4个字节

(2)bigint : 整形数据,大小为8个字节

(3)smallint:整形数据,大小为2个字节

(4)tinyint:从0到255的整形数据,存储大小为1字节

浮点数数据类型:

(1)float:4字节浮点数

(2)double: 8字节浮点数

(3)real: 8字节浮点数

字符型数据类型:

(1)char(n)n长度的字串,n不能超过254

(2)varchar(n)长度不固定且其长度为n的字串,n不能超过4000

(3)text text存储可变长度的非unicode数据,存放比varchar更大的字符串

注意事项:

(1)尽量用varchar

(1) 超过255字节的只能用varchar或text

(1)能用varchar的地方不用text

sqlite字符串区别:

1.char存储定长数据很方便,char字段上的索引效率极高,比如定义char(10),那么不论你存储的数据是否达到了10个字节,都要占去10个字节的空间,不足的自动用空格填充。2.varchar存储变长数据,但存储效率没有char高,如果一个字段可能的值是不固定长度的,我们只知道它不可能超过10个 >字符,把它定义为varchar(10)是最合算的,varchar类型的实际长度是它的值的实际长度+1.为什么+1呢?这个字节用于保存实际使用了多大的长度。因此,从空间上考虑,用varchar合适,从效率上考虑,用char合适,关键是根据情况找到权衡点

3.TEXT存储可变长度的非Unicode数据,最大长度为2^31-1(2147483647)个字符。

日期类型:

date:包含了 年份,月份,日期

time:包含了小时,分钟,秒

datetime:包含了年,月,日,时,分,秒

timestamp:包含了年,月,日,时,分,秒,千分之一秒

注意:datetime 包含日期时间格式,必须写成‘2010-08-05’不能写为‘2010-8-5’,否则在读取时会产生错误。

其他类型:

null:空值。

blob :二进制对象,主要用来存放图片和声音文件等

default:缺省值

primary key:主键值

autoincrement:主键自动增长

什么是主键

(1)primary key, 主键就是一个表中,有一个字段,里面的内容不可以重复

(2)一般一个表都需要设置一个主键

(3)autoincrement这样让主键自动增长

注意事项:

所有字符串必须要加‘ ’单引号

整数和浮点数不用加‘ ’

日期需要加单引号‘ ’

字段顺序没有关系,关键是key与value要对应

对于自动增长的主键不需要插入字段

SQLite命令行

.help(帮助)

.quit(退出)

.database(列出数据库信息)

.dump(查看所有的sql语句)

.schema(查看表结构)

.tables(显示所有的表)

SQLite数据库的增删查改操作

1.创建表

create table if not exists QFClass(Name varchar(256), StuCount smallint,StartDate date);

create table if not exists QFCourses(ID integer,Name varchar(256));

2.插入数据

insert into QFStu(Name) values('千锋');

insert into QFStu(Name,Age) values('艾丰',21);

insert into QFStu(Name,Age,Class,RegisterTime,Money,Birthday) values('Joker',23,12,'2013-02-12 11:11:11',3223,'1990-01-13');

3.查询语句

select *from QFStu;

select Name,Age from QFStu;

select Name,Age,RegisterTime,Money,Birthday from QFStu;

在查询中加上条件

select Name,Age,RegisterTime,Money,Birthday from QFStu where Age>10;

select Name,Age,RegisterTime,Money,Birthday from QFStu where Age>10 and ID>2;

select Name,Age,RegisterTime,Money,Birthday from QFStu where Name like'%千锋%';

select Name,Age,RegisterTime,Money,Birthday from QFStu where RegisterTime>'2013-01-13 11:11:11';

select统计语句

select count(*) from QFStu;

select avg(Age) from QFStu;

select sum(Age) from QFStu;

4.删除记录

(1)删除表中ID值为2的记录

delete from QFStu where ID=2;

(2)删除表中所有记录(慎重使用)

delete from QFStu;

5.更新/修改Update

更改ID为1的更新Name字段

update QFStu set Name ='千锋iOS' where ID =1;

更新ID为1的Name和Age字段

update QFStu set Name ='千锋iOS' ,Age=100 where ID=1;

更新所有记录的字段

update QFStu set Name=‘千锋iOS’;

将ID=1的记录的Age值增加10

update QFStu set Age=Age+10 where ID=1;

二.FMDataBase使用方法

FMDataBase是一个开源的第三方操作数据库的框架。因为iOS官方提供操作数据库的方法使用起来十分麻烦,FMDataBase是把官方提供的方法封装了一层,只是为了更方便开发使用。支持ARC和Non-ARC/MRC操作。

FMDataBase主要有以下3个类:

FMDataBase - 表示一个单独的SQLite数据库用来执行SQLite的命令

FMResultSet - 表示FMDataBase执行查询后结果集

FMDatabaseQueue - 如果想在多线程中执行多个查询和更新,应该使用该类,这是线程安全的。


1.FMDataBase数据库创建:

NSString *path=[NSHomeDirectory() stringByAppendingString:@"/Documents/tshinghua.db"];

NSLog(@"path is %@",path);

FMDatabase *fmdb=[FMDatabase databaseWithPath:path];

BOOL ret=[fmdb open];

如果创建数据库成功,ret为YES,否则ret为NO


2.FMDataBase表的创建

NSString *sql=@"create table if not exists QFStu(ID integer primary key autoincrement,Name varchar (128),Age integer,Class integer default 0, RegisterTime dateTime,Money float default 0,Birthday date);";

ret=[fmdb executeUpdate:sql];



3.FMDataBase 插入

(1)

NSString*sql1=@"insert into QFStu(Name,Age,Class,RegisterTime,Money,Birthday)values('Joker',23,12,'2013-02-12 11:11:11',3223,'1990-01-13);";

ret=[fmdbexecuteUpdate:sql1,@"Joker",@"23",@"4",@"2009-10-10 11:11:11",@"0",@"1991-01-13"];

(2)使用通配符进行查询

NSString *sql1=@"insert into QFStu(Name,Age,Class,RegisterTime,Money,Birthday)values(?,?,?,?,?,?);";

ret=[fmdb executeUpdate:sql1,@"Joker",@"23",@"4",@"2009-10-10 11:11:11",@"0",@"1991-01-13"];

4.FMDataBase 查询

(1)普通查询

NSString *sql2=@"select *from QFStu";

FMResultSet *set=[fmdb executeQuery:sql2];

while ([set next]) {

NSUInteger pid=[set intForColumn:@"ID"];

NSString *name=[set stringForColumn:@"Name"];

NSString *datetime=[set stringForColumn:@"RegisterTime"];

NSDate*d=[self dateFromString:datetime]; 

NSString *dateTime2=[self stringFromDate:d]; 

}

(2)对于查询结果是标量

NSString *sql=@"select from count(*) from QFStu";

FMResultSet*set=[fmdbexecuteQuery:sql];

NSUInteger count=0;

while([set next])

{

count=[set intForColumnIndex:0];

}


NSLog(@" count is %d",count);


对于标量是数据返回的是1*1矩阵,所以这有一列,这里使用0

5.FMDataBase删除记录

NSString *sql=@"delete from QFStu where ID=2;";

ret=[fmdb executeUpdate:sql];


使用通配符进行处理

ret=[fmdb executeUpdate:@"delete from QFStu where ID = ?",@"3"];

6.FMDataBase修改记录

NSString *sql=@"update QFStu set Name='千锋2' whereID=9;";

ret=[fmdb executeUpdate:sql];

ret=[fmdb executeUpdate;@"update QFStu set Name='千锋2' where ID =?",@"10"];


从数据库分页读取数据

limit是mysql的语法:
          select * from table limit m,n
          其中m是指记录开始的index,从0开始,表示第一条记录
          n是指从第m+1条开始,取n条。
          select * from tablename limit 2,4
          即取出第3条至第6条,4条记录

手把手教你用RoboTwin训练RDT模型:从环境配置到实战微调(避坑指南) 本文提供了一份详尽的避坑指南,手把手教你如何在RoboTwin开源仿真环境中,从零开始配置环境、采集数据并完成RDT视觉语言动作模型的实战微调。文章涵盖了环境搭建、数据流水线构建、模型配置与训练等关键步骤,旨在帮助研究者和开发者高效利用仿真数据,低成本探索具身智能应用。 阅读详情

相关推荐

差分运放电路输出电压偏置设计解析

差分运算放大电路是信号处理中的基础模块,通过差分对管结构实现共模抑制与差模放大。其核心原理基于运放的虚短虚断特性,当电阻网络满足对称条件时,输出电压与输入差分成正比。在工业测量系统中,由于ADC通常仅支持正电压输入,需要通过偏置电路将双极性信号平移至正电压范围。典型设计采用精密基准电压源和匹配电阻网络,既保持信号完整性又满足系统接口要求。本文以-100V高压测量为例,详细解析了分压网络设计、参考电压选取以及电阻匹配等关键技术要点,为传感器接口电路设计提供实践参考。

weixin_35750747的博客 470

FMDatabase的用法介绍

本人以后都会不定时的写一些关于IOS开发的教程,大家希望可提些意见,大家希望写些什么,对大家有帮助的,希望帮到大家: FMDatabase其实是一个很轻级的sqlite数据库封装库,用Object-C封装C,它主要有2个类:FMDatabase和FMResultSet 要使用它首先就要下载这个开源库,它的下载地址是:https://github.com/ccgus/fmdb 下载

Arlexovincy的专栏 1566

国产麒麟系统PXE安装-UEFI引导

注意: 适用uefi引导 适用x86_64架构 一键部署脚本扣我 1.上传ISO到PXE服务器,拷贝ISO文件 # mkdir /kylin_iso # mount -o loop Kylin-Server-10-SP1-Release-Build04-20200711-x86_64.iso /kylin_iso/ 2.配置http,获取安装源 # yum -y install httpd # mkdir /var/www/html/{ks,kylin} # 注意一定是"/kylin_iso/

河静 5055

数据库-FMDatabase的使用

FMDatabase 的使用方法   以下是FMDB的一些基本使用,FMDB框架其实只是一层很薄的封装,主要的类也就两个:FMDatabase和FMResultSet; 其中的FMResultSet对象让我想起了android中sqlite的cursor集合啊。 FMDB的github地址是,https://github.com/ccgus/fmdb。 补充:是导入F

梦从这里启航,代码改变世界 1491

ubuntu20.04安装Qt5.15.2并配置环境

qt官方取消了离线安装的方式,所以推荐在线安装,当然,如果想要自己通过源码编译也可以,参考官方文档:https://wiki.qt.io/Building_Qt_5_from_Git。 在线安装: 1.到官方网站下载:wget https://download.qt.io/official_releases/online_installers/qt-unified-linux-x64-online.run 2.修改文件权限:chmod 777 qt-unified-linux-x64-online.run

f120854632的博客 8807

京瓷扫描驱动安装_京瓷喷头拆解和供墨原理剖析

在工业喷头打印领域,京瓷喷头作为主流喷头广泛应用于喷墨行业,目前京瓷喷头市面上销售主要有两个系列:KJ4A和KJ4B。其中KJ4A系列设计是用于油性墨水,例如UV墨水,主要用在广告领域;而KJ4B设计用于水性墨水,例如活性、分散墨水等,主要用在数码印花领域。最近我们团队对京瓷喷头进行了拆解分析,本期和大家分享一下我们对京瓷喷头拆解和喷头供墨原理的研究。京瓷喷头介绍1. KJ4A系列(油性)如下图所...

weixin_39883906的博客 1673

数据库操作(使用FMDB)

iOS中原生的SQLite API在使用上相当不友好,在使用时,非常不便。于是,就出现了一系列将SQLite API进行封装的库,例如FMDB、PlausibleDatabase、sqlitepersistentobjects等,FMDB (https://github.com/ccgus/fmdb) 是一款简洁、易用的封装库,这一篇文章简单介绍下FMDB的使用。 在FMDB下载文件

Fly的技术博客 1277

Kettle入门指南:从安装到数据转换实战

本文提供Kettle(Pentaho Data Integration)的完整入门指南,涵盖从Java环境安装、软件配置到核心概念(转换与作业)的详细解析。通过实战案例,手把手教你如何将文本文件数据导出到Excel,并连接MySQL数据库进行数据导入,帮助你快速掌握这一强大ETL工具的基本使用,实现高效数据搬运与转换。

weixin_29266647的博客 449

FMDatabase 的使用方法

FMDatabase 的使用方法 - (NSString*) getPath {    NSArray* paths =NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES) ;    return [[pathsobjectAtIndex:0]stringByAppendin

ch_soft的专栏 2万+

海康SDK实战:如何从PS流中提取H264裸流并实现前端播放(附完整代码)

本文详细介绍了如何利用海康SDK从PS流中提取H264裸流,并构建无插件前端播放的完整链路。通过解析PS流结构、提取H264 ES流,结合WebSocket实时传输与WFS.js前端播放器,实现了低延迟、高可控性的视频流处理方案,为开发者提供了从数据源到前端渲染的实战代码与清晰指南。

weixin_29051811的博客 476

华为OD干了两个月,还是跑了

​本人工作了快13年,base南京。2024年2月份由于公司业务变动第一次拿到了公司发的大礼包,同时也面临着失业的问题,我对自己的技术还是很有信心的,但是,找了大概有一个多月时间,发现心意的工作的确不太好找,当然收到挺多家offer,就是薪资不太满意,外包也一直不想去,不过说实话外包给的薪资普遍要比自研的单位要高一些,最后为了钱还是进华为(既然选择外包那就选择好一些的吧),毕竟中年老男人工作不能断太久。

啊渊的专栏 1万+

fMDB常用的数据类型以及sql语句(二)

一、SQL语句 如果要在程序运行过程中操作数据库中的数据,那得先学会使用SQL语句 1.什么是SQL SQL(structured query language):结构化查询语言 SQL是一种对关系型数据库中的数据进行定义和操作的语言 SQL语言简洁,语法简单,好学好用   2.什么是SQL语句 使用SQL语言编写出来的句子\代码,就是SQL语句

ciwei_numberOne的博客 7353

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

iOS 数据库存储

iOS 数据库存储

ccflying88的专栏 412

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

FMDB中常用SQL使用

大家工作中,最常用到的无非是 增、删、查、改。。。 在SQL中对应的语句为:INSERT DELETE SELECT UPDATE 首先,你可以使用一款叫做“sqlite database browser”的工具来可视化的管理数据库。 然后把数据库文件加入到Resource目录下,然后通过以下代码来安装数据库,也就是拷贝到doc目录下: //install file to doc

夏天的学习小站 1万+

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

SQLite3语句以及用实现FMDB数据存储的学习

这周开始挑选完项目,我们就要进入项目内容的相关学习,为后面项目的编写做铺垫,本篇文章就是介绍了数据存储的相关知识。这还是一个比较粗糙的FMDB的实用说明,浅层的学习也足够知乎日报项目的实用,后续的相关学习就等知乎日报完成之后在。再进行系统规划吧。

aa2002aa的博客 1091

Oc FMDB+SQL语句

FMDB使用介绍 iOS中原生的SQLite API在使用上相当不友好,在使用时,非常不便。于是,就出现了一系列将SQLite API进行封装的库FMDB (https://github.com/ccgus/fmdb) 是一款简洁、易用的封装库,这一篇文章简单介绍下FMDB的使用。 一、简单说明 1.什么是FMDB FMDB是iOS平台的SQLite数据库框架 FMDB以OC的方式封装了

qq_40691827的博客 867

SQLite3语句以及FMDB数据存储初步学习

SQLite3是一款轻量级数据库,常用于嵌入式开发,支持NULL、INTEGER、REAL、TEXT和BLOB五种数据类型。

2501_91546205的博客 1171

FMDB使用和基本SQL语句

FMDB是一个基于sqlite_3封装的第三方shu

JerryLee的专栏 2460

FMDB常用语句整合

//获得数据库文件路径 NSString *doc=[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject]; NSString *fileName=[doc stringByAppendingPathComponent:@"wktest.sqlite"]

683

FMDB使用

类FMDB中有三个常用的类: FMDatabase 表示一个SQLite数据库,用来执行SQL语句。 FMResultSet 表示FMDatase 执行查询语句后的结果。 FMDatabaseQueue 当你需要在多线程中执行queries或updates时,需要使用这个类,它是线程安全的。 创建数据库创建一个数据库FMDatabase 需要一个存储数据库的路径,这个路径可以是一下三种之一: 一个系

烂笔头 6199

FMDB处理动态插入语句

一种利用FMDB,处理动态参数插入的方法

kyfxbl 5016

FMDB

本文示例代码查看 0.0 FMDB 结构图 1.FMDB 使用方法 1.1 类 1.1.1 三个基本类 FMDatabase: 代表一个 SQLite 数据库,用于执行 SQLite 语句; FMResultSet:表示FMDatabase执行查询后结果集 FMDatabaseQueue:如果你想在多线程中执行多个查询或更新,你应该使用该类。这是线程安全的。 1...

爱吃说话慢的小鱼 2963

FMDB详解

一、什么是FMDBFMDB是iOS平台用OC语言封装了SQLite API的数据库框架    二、FMDB的优点1、面向对象,使用了oc语言,避免了和c打交道2、FMDB是轻量级框架,使用更加灵活、方便3、提供了多线程的方式来操作数据库,可以防止多线程操作带来的数据混乱三、 FMDB常用的类1、FMDatabase sqlite的数据库对象,一个FMDatabase对象就代表了一个单独的sqlit...

yyq的博客 1万+

OC包装下的轻量SQL——FMDB

什么是FMDB 官方介绍: This is an Objective-C wrapper around SQLite. FMDB是针对libsqlite3框架进行封装的三方数据库,它以OC的方式封装了SQLite的C语言的API,使用步骤与SQLite相似。 FMDB的GitHub链接   FMDB的优缺点 优点 使用时面向对象,避免了复杂的C语言代码 对比苹果自带的CoreData框架,更加轻量级和灵活 提供多线程安全处理数据库操作方法,保证多线程安全跟数据准确性

LANGJ1的博客 1888

fmdb和mysql的区别_FMDB浅析

一、FMDB介绍FMDB是一种第三方的开源库,FMDB就是对SQLite的API进行了封装,加上了面向对象的思想,让我们不必使用繁琐的C语言API函数,比起直接操作SQLite更加方便。FMDB优点:使用起来更加面向对象,省去了很多麻烦、冗余的C语言代码对比苹果自带的CoreData框架,更加轻量级和灵活提供多线程安全,有效地防止数据混乱,原来的SQLite不是线程安全的FMDB缺点:因为是OC语...

weixin_42397024的博客 1298

FMDB浅析

一、FMDB介绍 FMDB是一种第三方的开源库,FMDB就是对SQLite的API进行了封装,加上了面向对象的思想,让我们不必使用繁琐的C语言API函数,比起直接操作SQLite更加方便。 FMDB优点: 使用起来更加面向对象,省去了很多麻烦、冗余的C语言代码 对比苹果自带的CoreData框架,更加轻量级和灵活 提供多线程安全,有效地防止数据混乱,原来的SQLite不...

b5916440的博客 291
上一篇: 对fmdb简单的封装
下一篇: initWithFrame 和 initWithCoder
ciwei_numberOne
博客等级 码龄12年 5粉丝 22原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值