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优 ...
随机推荐
- vuejs利用props,子组件修改父组件的数据,父组件修改子组件的的数据,数据类型为数组
博文参考 传送们点一点 父组件: <template> <div> <aa class="abc" v-model="test" ...
- Shell类
70个经典的 Shell 脚本面试问题 1) 如何向脚本传递参数 ? ./script argument 例子: 显示文件名称脚本 ./show.sh file1.txt cat show.sh ...
- mysql清空带外键的表
set FOREIGN_KEY_CHECKS =0;TRUNCATE memo;TRUNCATE customer;set FOREIGN_KEY_CHECKS =1;
- 常用的架包对应的maven配置
<!-- https://mvnrepository.com/artifact/com.google.guava/guava --> <dependency> <grou ...
- 【西北师大-2108Java】第四次作业成绩汇总
[西北师大-2108Java]第四次作业成绩汇总 深入理解程序设计中算法与程序的关系: 深入理解java程序设计中类与对象的关系: 理解OO程序设计的第2个特征:继承.多态: 学会采用继承定义类设计程 ...
- 对CNN 的理解
CNN 的强大之处在于它的多层结构能自动学习特征,并且可以学习到多个层次的特征:较浅的卷积层感知域较小,学习到一些局部区域的特征. 较深的卷积层具有较大的感知域,能够学习到更加抽象一些的特征.这些抽象 ...
- Es6编程风格
let 取代 var let 和 const 之间优先使用 const 字符串 静态字符串一律使用单引号或反引号,不使用双引号 动态字符串使用反引号 `` 解构赋值 使用数组成员对变量赋值时,优先使用 ...
- Jsoup获取部分页面数据失败 Unhandled content type. Must be text/*, application/xml, or application/xhtml+xml
用Jsoup在获取一些网站的数据时,起初获取很顺利,但是在访问某浪的数据是Jsoup报错,应该是请求头里面的请求类型(ContextType)不符合要求. 请求代码如下: private static ...
- SpringMVC常用注解(三)
一.@Controller .@RestController 和 @ControllerAdvice 1. @Controller @Controller 用于标记在一个类上,使用它标记的类就是一个S ...
- MySQL学习笔记1——DDL
DDL 1.数据库 *查看所有数据库:SHOW DATABASES;*切换(选择要操作的)数据库:USE 数据库名;*创建数据库:CREATE DATABASES [IF NOT EXISTS] my ...