FMDB的操作
#import "ZYDataManager.h"
#import "JSSportModel.h"
FMDatabase *db = nil; @implementation ZYDataManager
+(NSString *)dbFilePath
{
return [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/data.sqlite"];
} +(FMDatabase *)getDataBase
{
//第一次打开数据库时,db对象不存在,需要创建
if (db == nil) {
db = [FMDatabase databaseWithPath:[self dbFilePath]];
}
return db;
}
//
+(void)createTable
{
NSLog(@"%@",NSHomeDirectory());
if (![db open]) {
NSAssert(NO, @"数据库打开失败");
}
//设置是否缓存数据
[db setShouldCacheStatements:YES]; //判断表是否存在
if (![db tableExists:@"people"])
{
if (![db executeUpdate:@"create table if not exists sportTable(id INTEGER PRIMARY KEY, date TEXT, sportArray TEXT);"])
{
NSLog(@"数据表创建失败");
}
} } //
+(void)addNewJSSport:(JSSportModel *)JSModel
{
if (![db open]) {
NSAssert(NO, @"数据库打开失败");
} if (![db tableExists:@"people"]) {
[self createTable];
}
//?对应的字段值必须是(OC中字符串)
if (![db executeUpdate:@"insert into sportTable (date, sportArray) values (?,?)",
JSModel.dateStr,JSModel.arrayStr])
{
NSLog(@"插入数据失败");
}
[db close];
} +(NSMutableArray *)getAllFriend
{
if (![db open]) {
NSAssert(NO, @"数据库打开失败");
} if (![db tableExists:@"sportTable"]) {
return nil;
} NSMutableArray *array = [[NSMutableArray alloc] initWithCapacity:];
FMResultSet *rs = [db executeQuery:@"select * from sportTable;"];
//遍历所有满足条件的好友记录
while([rs next])
{
JSSportModel *jssportModel = [[JSSportModel alloc] init];
// jssportModel.rowId = [rs intForColumn:@"id"];
jssportModel.dateStr = [rs stringForColumn:@"date"];
jssportModel.arrayStr = [rs stringForColumn:@"sportArray"];
//保存好友记录
[array addObject:jssportModel]; } [rs close];
[db close];
return array ;
}
//
//+(void)deleteOneFriend:(Friend *)aFriend
//{
// if (![db open]) {
// NSAssert(NO, @"数据库打开失败");
// }
//
// if (![db tableExists:@"people"]) {
// NSLog(@"数据表不存在,不要删除");
// }
//
// if([db executeUpdate:@"delete from people where id = ?", [NSNumber numberWithInt:aFriend.rowId]])
// {
// NSLog(@"id = %d的记录删除成功!", aFriend.rowId);
// }
// [db close];
//} @end
#import <Foundation/Foundation.h>
//#import "FMDatabase.h"
//#import "FMDatabaseAdditions.h"
//#import "Friend.h"
@class JSSportModel;
@interface ZYDataManager : NSObject
+(NSString *)dbFilePath;
+(FMDatabase *)getDataBase;
+(void)createTable;
+(void)addNewJSSport:(JSSportModel *)JSModel;
+(NSMutableArray *)getAllFriend;
//+(void)deleteOneFriend:(Friend *)aFriend;
@end
FMDB的操作的更多相关文章
- FMDB的操作(转),这篇比我写的好
直接看吧 http://blog.devtang.com/blog/2012/04/22/use-fmdb/
- 从C#到Objective-C,循序渐进学习苹果开发(7)--使用FMDB对Sqlite数据库进行操作
本随笔系列主要介绍从一个Windows平台从事C#开发到Mac平台苹果开发的一系列感想和体验历程,本系列文章是在起步阶段逐步积累的,希望带给大家更好,更真实的转换历程体验.本篇主要开始介绍基于XCod ...
- iOS 数据库操作(使用FMDB)
iOS 数据库操作(使用FMDB) iOS中原生的SQLite API在使用上相当不友好,在使用时,非常不便.于是,就出现了一系列将SQLite API进行封装的库,例如FMDB.Plausibl ...
- iOS学习笔记(十六)——数据库操作(使用FMDB)
iOS中原生的SQLite API在使用上相当不友好,在使用时,非常不便.于是,就出现了一系列将SQLite API进行封装的库,例如FMDB.PlausibleDatabase.sqlitepers ...
- 数据库操作(使用FMDB)
iOS中原生的SQLite API在使用上相当不友好,在使用时,非常不便.于是,就出现了一系列将SQLite API进行封装的库,例如FMDB.PlausibleDatabase.sqlitepers ...
- iOS数据库操作(使用FMDB)
iOS中原生的SQLite API在使用上相当不友好,在使用时,非常不便.于是,就出现了一系列将SQLite API进行封装的库,例如FMDB.PlausibleDatabase.sqlitepers ...
- IOS FMDB 获取数据库表和表中的数据
ios开发中,经常会用到数据库sqlite的知识,除了增,删,改,查之外,我们说说如何获取数据库中有多少表和表相关的内容. 前言 跟数据库使用相关的一般的增删改查的语句,这里就不做解释了.在网上有很多 ...
- FMDB 数据库
iOS中原生的SQLite API在使用上相当不友好,在使用时,非常不便.于是,就出现了一系列将SQLite API进行封装的库,例如FMDB.PlausibleDatabase.sqlitepers ...
- FMDB浅析
一.FMDB介绍 FMDB是一种第三方的开源库,FMDB就是对SQLite的API进行了封装,加上了面向对象的思想,让我们不必使用繁琐的C语言API函数,比起直接操作SQLite更加方便. FMDB优 ...
随机推荐
- django前奏
目录 前言 web框架本质 服务器程序和应用程序 python三大主流web框架 django flask torndao Django安装配置 注意事项 命令行创建项目 app的概念 pycharm ...
- CodeForces - 1228D (暴力+思维+乱搞)
题意 https://vjudge.net/problem/CodeForces-1228D 有一个n个顶点m条边的无向图,在一对顶点中最多有一条边. 设v1,v2是两个不相交的非空子集,当满足以下条 ...
- fiddler---Fiddler查看get和post请求
前几篇写了Fiddler的一些功能介绍,今天我们一起学习下如何通过fiddler查看get请求和post请求和get,post区别 get请求 1.启动fiddler,抓取安静博客地址 2.通过fid ...
- client-go向controller进发---code-generator实现
这个时间长了,可能前后想了一周时间. 哎,其它不怪,只怪go的工程包管理这几年太混乱, 而国内下载资源也太漫长. 现在,只能坚持 使用go mod了. 但在使用code-generator时,go m ...
- vmvare虚拟机篇
新建虚拟机-典型-稍后安装-Linux-管理-从磁盘删除-虚拟机名称-位置- 安装Tools-用于虚拟机和本地文件共享和传送 网络适配器桥接模式-桥接本地网卡 NAT模式-再重新连接本地网卡 仅主机模 ...
- MDK编译优化笔记
在一次使用MDk的编译优化等级比较高的时候发现编译不优化时功能正常,开了优化等级02就出现异常,调试中看了很多博客总结一下. 一个变量,如果你的主程序要用到,同时中断还要用到,要加volatile修饰 ...
- appium--python启动appium服务
前戏 前面我们都是在cmd下通过输入appium加端口号来启动服务的,在我们做自动化的时候,我们当然不希望我们手动启动appium服务,而是希望通过脚本自动启动appium服务. 我们可以使用subp ...
- python-1-基础认识
前言 将近2020年,python2即将不再更新,但是我们现在的python3也能非常受欢迎的!回顾一下2/3的区别: 1.python2 源码不标准,混乱,重复代码太多, 2.python3 统一 ...
- CodeForce 176C Playing with Superglue
Two players play a game. The game is played on a rectangular board with n × m squares. At the beginn ...
- RESTful Webservice 和 SOAP Webserivce 对比及区别【转】
接口抽象 RESTful Web 服务使用标准的 HTTP 方法 (GET/PUT/POST/DELETE) 来抽象所有 Web 系统的服务能力,而不同的是,SOAP 应用都通过定义自己个性化的接口方 ...