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-网络通信概述 ...
随机推荐
- 从零开始学习OpenGL ES之一 – 基本概念
我曾写过一些文章介绍iPhone OpenGL ES编程,但大部分针对的是已经至少懂得一些3D编程知识的人.作为起点,请下载我的OpenGL Xcode项目模板,而不要使用Apple提供的模板.你可以 ...
- JS的className,字体放大缩小
<!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content ...
- PAT (Advanced Level) 1109. Group Photo (25)
简单模拟. #include<cstdio> #include<cstring> #include<cmath> #include<vector> #i ...
- Mysql中int(2)和int(10)的区别
int(N)中的N不是限制字段取值范围的,int的取值范围是固定的(0至4294967295)或(-2147483648至2147483647) 那么N这个值是为了在字段中的值不够时补零的,但是必须含 ...
- linux export将PATH环境变量误删了的解决办法
今天新增环境变量的时候不小心把冒号错打成了分号 export PATH=/usr/local/php5/bin;$PATH; 导致PATH变量为/usr/local/php/bin 解决办法:[ubu ...
- SecureCRT 上传文件的两种方法 Zmodem、SFTP
Zmodem: 无论有xshell还是secureCRT连接linux的时. 默认都用一个zmodem可以帮助window和linux之间传输文件 很方便和实用的工具. 不过默认是无法使用的 需要安装 ...
- github 教程
http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/
- windows加固方案
1 账号管理.认证授权.... 1 1.1 账号... 1 1.2 口令... 1 1.3 授权... 2 2 日志配置操作.... 3 3 IP ...
- Android导入工程,R 资源文件无法生成
在Android中使用开源代码或者自己开发项目的时候,经常会遇到R.java文件丢失的情况,如何重新生成呢?网上一般给出这样的两种方法: 方法 1:右击你的工程(项目)——>Android To ...
- Android利用canvas画各种图形 及Paint用法 .
引自:http://blog.csdn.net/carlfan/article/details/8139984 1.首先说一下canvas类: Class Overview The Canvas cl ...