FMDBManager.h

#import <Foundation/Foundation.h>
#import "FMDatabase.h" @interface FMDBManager : NSObject
{
NSString *dataBasePath;
FMDatabase * fmdbDataBase;//数据库对象
BOOL isFMDBopen;
} + (FMDBManager *)sharedFMDB; // 创建表
-(void)createTable; // 插入记录
-(void)insertTable; // 获取所有记录
-(NSMutableArray *)getList; //删除某人所有信息
-(BOOL)deleteUser; @end FMDBManager.m #import "FMDBManager.h"
#import "userModel.h" #define FMDB_NAME @"test.sqlite3" static FMDBManager *_sharedFMDB = nil; @implementation FMDBManager //共享实例
+(FMDBManager *)sharedFMDB
{ if (_sharedFMDB == nil) {
_sharedFMDB = [[FMDBManager alloc]init];
}
return _sharedFMDB;
} -(id)init
{
self = [super init];
if (self) {
// Custom initialization
[self openDataBase];
}
return self;
} -(void)openDataBase
{
// NSDocumentDirectory (Documents目录下面) NSLibraryDirectory(Library目录下面)
NSArray *libPaths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);
dataBasePath=[[libPaths objectAtIndex:] stringByAppendingPathComponent:FMDB_NAME]; // 创建数据库
fmdbDataBase = [FMDatabase databaseWithPath:dataBasePath];
if ([fmdbDataBase open]) {
isFMDBopen = YES;
} else {
isFMDBopen = NO;
NSLog(@"error when open db");
} } // 判断是否存在表
- (BOOL) isTableOK:(NSString *)tableName
{
FMResultSet *rs = [fmdbDataBase executeQuery:@"select count(*) as 'count' from sqlite_master where type ='table' and name = ?", tableName];
while ([rs next])
{
// just print out what we've got in a number of formats.
NSInteger count = [rs intForColumn:@"count"]; if ( == count)
{
NSLog(@"表不存在");
return NO;
}
else
{
NSLog(@"表已存在");
return YES;
}
} return NO;
} // 创建表
-(void)createTable
{
NSString *strCreatetable = [NSString stringWithFormat:@"CREATE TABLE 'user10086' ('userID' INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, 'userName' text, 'passWord' text)"]; if (![self isTableOK:[NSString stringWithFormat:@"%@",@"user10086"]])
{
BOOL res = [fmdbDataBase executeUpdate:strCreatetable];
if (!res)
{
NSLog(@"error when creating db table");
}
else
{
NSLog(@"succ to creating db table");
}
} } // 插入数据
-(void)insertTable
{ NSString *strInserttable = [NSString stringWithFormat:@"insert into user10086 (userName, passWord) values(?, ?) "];
BOOL res = [fmdbDataBase executeUpdate:strInserttable,@"testUser",@""]; if (!res) {
NSLog(@"insert error");
} else {
NSLog(@"insert success");
}
} // 获取所有记录
-(NSMutableArray *)getList
{
NSMutableArray *chatList = [[NSMutableArray alloc] init]; NSString *sqlQuery = [NSString stringWithFormat:@"select * from user10086"];
FMResultSet * rs = [fmdbDataBase executeQuery:sqlQuery];
while ([rs next]) { userModel *user = [[userModel alloc] init]; user.userId = [NSString stringWithFormat:@"%d",[rs intForColumn:@"userID"]];
user.userName = [rs stringForColumn:@"userName"];
user.passWord = [rs stringForColumn:@"passWord"]; [chatList addObject:user];
} return chatList;
} //删除某一条记录
-(BOOL)deleteUser
{
NSString *sqlDelete = [NSString stringWithFormat:@"delete from user10086 where userID=%d", ]; return [fmdbDataBase executeUpdate:sqlDelete];
} @end // 使用
[[FMDBManager sharedFMDB]createTable];
[[FMDBManager sharedFMDB]insertTable];

FMDB使用的更多相关文章

  1. 【原】FMDB源码阅读(三)

    [原]FMDB源码阅读(三) 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 FMDB比较优秀的地方就在于对多线程的处理.所以这一篇主要是研究FMDB的多线程处理的实现.而 ...

  2. 【原】FMDB源码阅读(二)

    [原]FMDB源码阅读(二) 本文转载请注明出处 -- polobymulberry-博客园 1. 前言 上一篇只是简单地过了一下FMDB一个简单例子的基本流程,并没有涉及到FMDB的所有方方面面,比 ...

  3. 【原】FMDB源码阅读(一)

    [原]FMDB源码阅读(一) 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 说实话,之前的SDWebImage和AFNetworking这两个组件我还是使用过的,但是对于 ...

  4. IOS FMDB 获取数据库表和表中的数据

    ios开发中,经常会用到数据库sqlite的知识,除了增,删,改,查之外,我们说说如何获取数据库中有多少表和表相关的内容. 前言 跟数据库使用相关的一般的增删改查的语句,这里就不做解释了.在网上有很多 ...

  5. 简单的数据库设计及使用(FMDB)

    有这样一个需求: 有m个用户公用n个文件,一个用户可能会用到多个文件,一个文件可能被多个用户使用: 如果某个用户离开,那这个用户就不再使用任何文件:如果某个文件没有任何用户使用,就要删除该文件: 已知 ...

  6. FMDB的使用方法

    转自:http://blog.devtang.com/blog/2012/04/22/use-fmdb/ 前言 SQLite (http://www.sqlite.org/docs.html) 是一个 ...

  7. FMDB 排它锁

    -------------------------------------基本操作------------------------------------- #import "ViewCon ...

  8. [ios]关于用FMDB 操作数据库 删除 tableView 后刷新

    刚了解使用fmdb,从数据库获取数据 绑定到一个可变数组classNameItems //从ClassList表取得数据 FMResultSet *classInfo=[db executeQuery ...

  9. IOS数据存储之FMDB数据库

    前言: 最近几天一直在折腾数据库存储,之前文章(http://www.cnblogs.com/whoislcj/p/5485959.html)介绍了Sqlite 数据库,SQLite是一种小型的轻量级 ...

  10. FMDB第三方框架

    FMDB是同AFN,SDWebImage同样好用的第三方框架,它以OC的方式封装了SQLite的C语言API,使得开发变得简单方便. 附上github链接https://github.com/ccgu ...

随机推荐

  1. javascript 我是广告

    <!DOCTYPE html><html><head><meta charset="utf-8"><meta http-equ ...

  2. jQuery插件Jeditable的使用(Struts2处理)

        Jeditable - Edit In Place Plugin For jQuery,是一款JQuery就地编辑插件.也就是在页面直接点击需要编辑的内容,就会自动变成文本框进行编辑.它的官方 ...

  3. c++之 变量

    变量的基本操作 变量就是一个可以变化的量,变量由变量类型.变量名.初始值(可选)组成,例如: int abc = 10; 变量类型:int 变量名:abc 初始值:10 // 该值为可选项,在创建变量 ...

  4. Unity 2D 跑酷道路动起来

    之前做2D的游戏怎样让背景动起来?就想着做成滚屏效果不就行了,今天在网上看到人家做的既简单又方便,唉,忏愧啊!不过还好,下次可以为自己所用了!呵呵 废话就不扯了,新建工程! 1 ,打开Unity 5. ...

  5. Java中随机数生成的两种方法,以及math的floor

    1.Math的random方法,调用这个Math.Random()函数能够返回带正号的double值,该值大于等于0.0且小于1.0,即取值范围是[0.0,1.0)的左闭右开区间,返回值是一个伪随机选 ...

  6. CSS 相关知识总结

    1 什么是CSS? CSS全称(Cascading Style Sheets)是一门指定文档该如何呈现给用户的语言. 2 为何使用CSS? CSS 文档信息的内容和如何展现它的细节想分离,文档细节即为 ...

  7. 关于bxslider在点击左右按钮之后不能自动切换的问题解决

    bxslider很好,但是也弄了个很脑残的设置,每次点击左右按钮之后,就不能自动切换了,要重新点击下方播放的按钮,相当不好用.问度娘没能解决,但是发现一个论坛说要修改源码,这个也找了好久,没找到,问群 ...

  8. css3实现手机菜单展开收起动画

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http ...

  9. RS-232通信原理

    rs232串口通信原理 串口是计算机上一种非常通用设备通信的协议(不要与通用串行总线Universal Serial Bus或者USB混淆).大多数计算机包含两个基于RS232的串口.串口同时也是仪器 ...

  10. varchar和Nvarchar的区别

    (1)varchar(N) 存储时 N的单位是字节  比如说varchar(2)  代表的是  该字段可以存储字节长度为2的数据 例子:可以添加  张 或者 ab  添加成功! 但添加的时候如果是: ...