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. pyqt listview基础学习01

    from decimal import * from PyQt4.QtGui import * from PyQt4.Qt import * from PyQt4.QtCore import * im ...

  2. Zookeeper学习记录(一):设计与实现

    概述 Zookeeper是一个分布式的.开源的分布式应用协调服务.它暴露了一组简单的基础原件,分布式应用可以在这些原件之上实现更高级别的服务,如同步.配置维护.群组.和命名.它被设计成容易编程实现的, ...

  3. [Protractor] Protractor Interactive with elementor

    Install: npm install -g elementor Then run: webdriver-manager start Lets say if we want to test 'htt ...

  4. DOS 选择跳转实现、dos + bcp 双击导入和导出数据

    DOS 选择跳转实现.dos + bcp 双击导入和导出数据 option.bat @echo off :Start2 cls goto Start :Start title Frequently U ...

  5. NET基础课--NET的一些概念0

    0.CIL--公共中间语言 VC++:经过预编译,编译,汇编和链接生成本地可执行代码,支持它运行的是OS和本地cpu指令集. C#:    在.net框架下类似c#的高级语言经过编译生成的文件叫程序集 ...

  6. td 单元格 内容自动换行

    <table width="100%" border="1" align="center"> <tr> <td ...

  7. JS 根据Url参数名称来获取对应的值 方法封装

    function GetQueryString(name) { var reg = new RegExp("(^|&)" + name + "=([^&] ...

  8. UVA11361 Investigating Div-Sum Property(数位dp)

    转载请注明出处: http://www.cnblogs.com/fraud/          ——by fraud 题目意思:问在区间[A,B]有多少个数不仅满足自身是k的倍数,而且其各个位数上的和 ...

  9. (转+原)ipp "No dlls were found in the Waterfall procedure"

    转自: http://blog.csdn.net/hua_007/article/details/9112909 1,吧 dll的目录放到系统环境变量中 intel 的官方推荐.验证是ok的. --- ...

  10. bootstrap data- jquery .data

    jquery官网对.data函数描述是:在匹配元素上存储任意相关数据 或 返回匹配的元素集合中的第一个元素的给定名称的数据存储的值. 存储键值(key/value): $("body&quo ...