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条记录

Pintos project 1 实验报告(代码分享) 任务一 Alarm Clock 用到的相干目录有: pintos/src/devices time.h && time.c pintos/src/threads thread.h && thread.c 预期pass希望:暂无,安装pintos之后,第一次对threads进行make check操作,可以发现以alarm--开头的前六个文件,以及mlfqs-fair-2和mlfqs-fair-20文件,一开始就测试成功pass。但是为了避免对后期的修改有影响,这里还是要 阅读详情

相关推荐

搭建适用于lammps中opls-aa力场的文件流程

现在我已经解决了以上问题,并且通过我的方法可以实现从空白文档到搭建完成以上全部内容,后期只要细心检查即可。需要的data文件最关键是获得相应阴阳离子的mmol文件,因此问题转化为构建一份mmol文件。主要用到的软件及程序:gaussian09,makemol程序(tranal),opls-aa的参数文件。二面角个数:成角原子序号及对应的参数(这里PF6的结构没有二面角,所以为0)参考文献个数:文献名(空够行数即可,这些是给自己的备忘))和自身体系对应的参考文献,修改或填入对应的参数即可。

baguette的博客 2887

FMDatabase的用法介绍

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

Arlexovincy的专栏 1566

SAP公司间采购后台配置及前台操作详解

公司间采购后台配置及前台操作详解 SAP 实施中公司间交易几乎每个项目都会有此业务需求,比如内地很多公司都会在香港设置贸易型子公司。通过香港公司接单,然后转内地公司生产,或内地公司通过香港公司采购进口原材料,这些业务必然会涉及到公司间交易,下面我将详细说明下SAP是如何实现这种业务场景的,供大家参考。 配置前必须前台先创建公司间供应商主数据和客户主数据 1. 创建相应的客户主数据 功能说明 公司间...

weixin_40672823的博客 1万+

数据库-FMDatabase的使用

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

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

3. NVIDIA GPU Xid 常见错误码全解析、故障定位与标准化处理方案

摘要: Xid是NVIDIA显卡驱动记录的硬件/软件异常日志,通过dmesg等工具可获取,包含PCI总线、GPU编号、故障码等信息,是诊断显卡问题的核心依据。Xid故障分为四类:应用程序类(如代码错误,Xid13/31)、显存ECC硬件类(如显存损坏,Xid48/63)、链路/供电温控类(如PCIe故障,Xid74/79)和GSP固件类(如静电干扰,Xid119/154)。排查流程包括日志采集、软件修复(如重启进程、升级驱动)、硬件检查(如PCIe链路状态)及断电复位(针对GSP故障)。预防措施包括监控EC

jundao1997的专栏 670

【大模型】DeepSeek + Coze 打造个人专属AI智能体使用详解

DeepSeek + Coze 打造个人专属AI智能体使用详解

congge 1万+

数据库操作(使用FMDB)

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

Fly的技术博客 1277

Prompt进阶2:LangGPT(构建高性能Prompt策略和技巧)--最佳实践指南

Prompt进阶2:LangGPT(构建高性能Prompt策略和技巧)--最佳实践指南

丨汀、的博客 2650

FMDatabase 的使用方法

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

ch_soft的专栏 2万+

PCL 基于法线微分(DoN)的点云分割【2026最新版】

基于法线微分的分割。博客长期更新,本文最新更新时间为:2026年5月10日。

点云侠的博客 39万+

C++ 小游戏程序 (共七款)

C++编程小游戏_闪耀的天狼星的博客-优快云博客_游戏c++C++跑酷小游戏_闪耀的天狼星的博客-优快云博客。好玩的c++编程小游戏,共六款。代码】C++跑酷小游戏。

小天狼星_布莱克 的博客 3万+

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

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

ciwei_numberOne的博客 7353

深度学习论文: Towards Total Recall in Industrial Anomaly Detection

在大规模工业制造中,能够准确检测出有缺陷的零件至关重要。我们在这项工作中面临的一个特殊挑战是冷启动问题:仅使用正常的示例图像来训练模型。虽然可以针对每个类别手动设计解决方案,但我们的目标是构建能够自动适用于多个任务的系统。最佳的方法是将ImageNet模型的嵌入特征与异常检测模型结合起来。在本文中,我们在这一研究基础上进行了扩展,并提出了PatchCore,它利用了一个具有最大代表性的正常补丁特征内存库。通过这种方法,我们能够更好地解决冷启动问题,并提高系统在多任务上的性能。

mingo_敏 1875

iOS 数据库存储

iOS 数据库存储

ccflying88的专栏 412

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

FMDB中常用SQL使用

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

夏天的学习小站 1万+

假人有限元模型

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

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

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

aa2002aa的博客 1091

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

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

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值