FMDB的一些基本操作小结
http://blog.csdn.net/iunion/article/details/7204625
仅供自己记录使用,
h文件
- #import <Foundation/Foundation.h>
- #import "FMDatabase.h"
- #import "FMDatabaseAdditions.h"
- @interface wiDBRoot : NSObject
- @property (retain, nonatomic) FMDatabase *DB;
- @property (retain, nonatomic) NSString *DBName;
- //+ (id)modelWithDBName:(NSString *)dbName;
- - (id)initWithDBName:(NSString *)dbName;
- // 删除数据库
- - (void)deleteDatabse;
- // 数据库存储路径
- //- (NSString *)getPath:(NSString *)dbName;
- // 打开数据库
- - (void)readyDatabse;
- // 判断是否存在表
- - (BOOL) isTableOK:(NSString *)tableName;
- // 获得表的数据条数
- - (BOOL) getTableItemCount:(NSString *)tableName;
- // 创建表
- - (BOOL) createTable:(NSString *)tableName withArguments:(NSString *)arguments;
- // 删除表-彻底删除表
- - (BOOL) deleteTable:(NSString *)tableName;
- // 清除表-清数据
- - (BOOL) eraseTable:(NSString *)tableName;
- // 插入数据
- - (BOOL)insertTable:(NSString*)sql, ...;
- // 修改数据
- - (BOOL)updateTable:(NSString*)sql, ...;
- // 整型
- - (NSInteger)getDb_Integerdata:(NSString *)tableName withFieldName:(NSString *)fieldName;
- // 布尔型
- - (BOOL)getDb_Booldata:(NSString *)tableName withFieldName:(NSString *)fieldName;
- // 字符串型
- - (NSString *)getDb_Stringdata:(NSString *)tableName withFieldName:(NSString *)fieldName;
- // 二进制数据型
- - (NSData *)getDb_Bolbdata:(NSString *)tableName withFieldName:(NSString *)fieldName;
- @end
m文件
- #import "wiDBRoot.h"
- @interface wiDBRoot ()
- - (NSString *)getPath:(NSString *)dbName;
- @end
- @implementation wiDBRoot
- @synthesize DB;
- @synthesize DBName;
- /*
- + (id)modelWithDBName:(NSString *)dbName
- {
- [[[self alloc] initWithDBName:dbName] autorelease];
- return self;
- }
- */
- - (id)initWithDBName:(NSString *)dbName
- {
- self = [super init];
- if(nil != self)
- {
- DBName = [self getPath:dbName];
- WILog(@"DBName: %@", DBName);
- }
- return self;
- }
- - (void)dealloc {
- [DB close];
- [DB release];
- [DBName release];
- [super dealloc];
- }
- // 数据库存储路径(内部使用)
- - (NSString *)getPath:(NSString *)dbName
- {
- NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
- NSString *documentsDirectory = [paths objectAtIndex:0];
- return [documentsDirectory stringByAppendingPathComponent:dbName];
- }
- // 打开数据库
- - (void)readyDatabse
- {
- //BOOL success;
- //NSError *error;
- //NSFileManager *fileManager = [NSFileManager defaultManager];
- //success = [fileManager fileExistsAtPath:self.DBName];
- if ([DB databaseExists])
- return;
- //DB = [FMDatabase databaseWithPath:DBName];
- DB = [[FMDatabase alloc] initWithPath:DBName];
- if (![DB open])
- {
- [DB close];
- NSAssert1(0, @"Failed to open database file with message '%@'.", [DB lastErrorMessage]);
- }
- // kind of experimentalish.
- [DB setShouldCacheStatements:YES];
- }
- #pragma mark 删除数据库
- // 删除数据库
- - (void)deleteDatabse
- {
- BOOL success;
- NSError *error;
- NSFileManager *fileManager = [NSFileManager defaultManager];
- // delete the old db.
- if ([fileManager fileExistsAtPath:DBName])
- {
- [DB close];
- success = [fileManager removeItemAtPath:DBName error:&error];
- if (!success) {
- NSAssert1(0, @"Failed to delete old database file with message '%@'.", [error localizedDescription]);
- }
- }
- }
- // 判断是否存在表
- - (BOOL) isTableOK:(NSString *)tableName
- {
- FMResultSet *rs = [DB 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"];
- WILog(@"isTableOK %d", count);
- if (0 == count)
- {
- return NO;
- }
- else
- {
- return YES;
- }
- }
- return NO;
- }
- // 获得表的数据条数
- - (BOOL) getTableItemCount:(NSString *)tableName
- {
- NSString *sqlstr = [NSString stringWithFormat:@"SELECT count(*) as 'count' FROM %@", tableName];
- FMResultSet *rs = [DB executeQuery:sqlstr];
- while ([rs next])
- {
- // just print out what we've got in a number of formats.
- NSInteger count = [rs intForColumn:@"count"];
- WILog(@"TableItemCount %d", count);
- return count;
- }
- return 0;
- }
- // 创建表
- - (BOOL) createTable:(NSString *)tableName withArguments:(NSString *)arguments
- {
- NSString *sqlstr = [NSString stringWithFormat:@"CREATE TABLE %@ (%@)", tableName, arguments];
- if (![DB executeUpdate:sqlstr])
- //if ([DB executeUpdate:@"create table user (name text, pass text)"] == nil)
- {
- WILog(@"Create db error!");
- return NO;
- }
- return YES;
- }
- // 删除表
- - (BOOL) deleteTable:(NSString *)tableName
- {
- NSString *sqlstr = [NSString stringWithFormat:@"DROP TABLE %@", tableName];
- if (![DB executeUpdate:sqlstr])
- {
- WILog(@"Delete table error!");
- return NO;
- }
- return YES;
- }
- // 清除表
- - (BOOL) eraseTable:(NSString *)tableName
- {
- NSString *sqlstr = [NSString stringWithFormat:@"DELETE FROM %@", tableName];
- if (![DB executeUpdate:sqlstr])
- {
- WILog(@"Erase table error!");
- return NO;
- }
- return YES;
- }
- // 插入数据
- - (BOOL)insertTable:(NSString*)sql, ...
- {
- va_list args;
- va_start(args, sql);
- BOOL result = [DB executeUpdate:sql error:nil withArgumentsInArray:nil orVAList:args];
- va_end(args);
- return result;
- }
- // 修改数据
- - (BOOL)updateTable:(NSString*)sql, ...
- {
- va_list args;
- va_start(args, sql);
- BOOL result = [DB executeUpdate:sql error:nil withArgumentsInArray:nil orVAList:args];
- va_end(args);
- return result;
- }
- // 暂时无用
- #pragma mark 获得单一数据
- // 整型
- - (NSInteger)getDb_Integerdata:(NSString *)tableName withFieldName:(NSString *)fieldName
- {
- NSInteger result = NO;
- NSString *sql = [NSString stringWithFormat:@"SELECT %@ FROM %@", fieldName, tableName];
- FMResultSet *rs = [DB executeQuery:sql];
- if ([rs next])
- result = [rs intForColumnIndex:0];
- [rs close];
- return result;
- }
- // 布尔型
- - (BOOL)getDb_Booldata:(NSString *)tableName withFieldName:(NSString *)fieldName
- {
- BOOL result;
- result = [self getDb_Integerdata:tableName withFieldName:fieldName];
- return result;
- }
- // 字符串型
- - (NSString *)getDb_Stringdata:(NSString *)tableName withFieldName:(NSString *)fieldName
- {
- NSString *result = NO;
- NSString *sql = [NSString stringWithFormat:@"SELECT %@ FROM %@", fieldName, tableName];
- FMResultSet *rs = [DB executeQuery:sql];
- if ([rs next])
- result = [rs stringForColumnIndex:0];
- [rs close];
- return result;
- }
- // 二进制数据型
- - (NSData *)getDb_Bolbdata:(NSString *)tableName withFieldName:(NSString *)fieldName
- {
- NSData *result = NO;
- NSString *sql = [NSString stringWithFormat:@"SELECT %@ FROM %@", fieldName, tableName];
- FMResultSet *rs = [DB executeQuery:sql];
- if ([rs next])
- result = [rs dataForColumnIndex:0];
- [rs close];
- return result;
- }
- @end
FMDB的一些基本操作小结的更多相关文章
- shell 基本操作小结
1.echo和if else fi命令 #!/bin/bash echo hello;echo there filename=demo.sh if [ -e "$filename" ...
- fmdb 数据库的基本操作
/** * 创建表 */ - (void)createTable { //1.初始化数据库对象 并且 2.打开数据库 BOOL isOpenSuccess = [self.database open ...
- [转载] Python 列表(list)、字典(dict)、字符串(string)常用基本操作小结
创建列表 sample_list = ['a',1,('a','b')] Python 列表操作 sample_list = ['a','b',0,1,3] 得到列表中的某一个值 value_star ...
- Python 列表(list)、字典(dict)、字符串(string)常用基本操作小结
创建列表 sample_list = ['a',1,('a','b')] Python 列表操作 sample_list = ['a','b',0,1,3] 得到列表中的某一个值 value_star ...
- java 对类型的基本操作小结
1.json 字符串转换成对象 SyncCarriageStatusDTO dto= JSON.parseObject(value,SyncCarriageStatusDTO.class); List ...
- 转:Python 列表(list)、字典(dict)、字符串(string)常用基本操作小结
转自:http://blog.csdn.net/business122/article/details/7536991 创建列表 sample_list = ['a',1,('a','b')] Pyt ...
- 一行代码实现FMDB的CURD操作
上次实现FMDB的CURD基本操作后,用在项目里,每个实体类都要写SQL语句来实现创建表和CURD操作,总觉得太麻烦,然后就想着利用反射和kvc来实现一个数据库操作的基类继承一下,子类只需要继承,然后 ...
- Verdi 看波形常用快捷操作
Verdi看波形的基本操作小结: 快捷键:(大写字母=Shift+小写) g get, signlas添加信号,显示波形n next, Search Forward选定信号按指定的值(上升 ...
- python就业班-淘宝-目录.txt
卷 TOSHIBA EXT 的文件夹 PATH 列表卷序列号为 AE86-8E8DF:.│ python就业班-淘宝-目录.txt│ ├─01 网络编程│ ├─01-基本概念│ │ 01-网络通信概述 ...
随机推荐
- linux视频学习4(crontab和进程)
1 . crontab定时任务: 任务调度: 系统在某个时间执行的特定的命令. 分类: 1.系统工作.2.个别的用户工作. 设置任务调度文件: /etc/crontab 1.crontab -e : ...
- jsp ${param.id}用法
它的取值范围Page,Request,Session,Application. ${param.id} 与输入有关,相对于 request.getParameter("id").意 ...
- Loadrunner之文件的下载(八)
老猪提供: https://mp.weixin.qq.com/s?__biz=MzIwOTMzNDEwNw==&mid=100000013&idx=1&sn=624f5bc74 ...
- 学习笔记——策略模式Strategy
策略模式,与模板模式一样,都是为了将接口和算法实现解耦,但策略模式更主要是整体算法的替换,而模板模式主要是流程一致,部分算法的替换. 个人理解为,一般算法替换,使用策略模式,当算法流程一致,可以提取为 ...
- 转:Selenium中的几种等待方式,需特别注意implicitlyWait的用法
最近在项目过程中使用selenium 判断元素是否存在的时候 遇到一个很坑爹的问题, 用以下方法执行的时候每次都会等待很长一段时间,原因是因为对selenium实现方法了解不足导致一直找不到解决方法. ...
- 善用log日志
#-*- coding:utf-8 -*- import logging logger = logging.getLogger() #定义一个log日志对象 hdlr = logging.FileHa ...
- zencart url特殊字符处理
1. 支持 在后台的seo url 将Outputw3c 改为false 2.删除特殊字符 这对于在少量的zen cart网站上处理少量的特殊字符可能还适用,实际上我们经常在导入产品数据时或者或少会带 ...
- Excel 帮助类
using System; using System.Collections.Generic; using System.Data; using System.Drawing; using Syste ...
- sqlserver2008用bat脚本备份时报错因为库名有中横杠【原创】
提示原因是数据库名字有中横岗“-” 解决方法:用中括号把名字括起来就可以了 call :backupone [数据库名-new] 完整备份脚本如下 @ECHO ON set DATE=%date:/= ...
- select, poll, epoll
select的一 个缺点在于单个进程能够监视的文件描述符的数量存在最大限制,在Linux上一般为1024 http://www.cnblogs.com/bigwangdi/p/3182958.html ...