iphone FMDB数据库(2)
来源:互联网 发布:淘宝客如何地推 编辑:程序博客网 时间:2024/05/21 13:18
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
- iphone FMDB数据库(2)
- FMDB iphone数据库
- FMDB iphone 数据库
- iphone FMDB数据库
- iPhone/iPad sqlite3数据库操作之fmdb
- FMDB数据库(二)
- 数据库(fmdb)
- IOS 操作数据库(FMDB)
- FMDB(数据库的操作)
- fmdb数据库
- FMDB数据库
- FMDB数据库
- 数据库fmdb
- FMDB数据库
- iOS数据库的使用方法(FMDB)
- 数据库的操作(使用FMDB)
- 原创申精-Iphone 编程 用FMDB完成简单的SQlite数据库交互
- FMDB For iPhone DAO示例
- Android 中的 Service 全面总结
- 最大公约数和最小公倍数
- acm 2041
- 一个unity3d的博客
- 【python】对文件操作flush的一个理解
- iphone FMDB数据库(2)
- 如何检测和隔离内存泄漏(文章)
- struts2中使用freemarker 生成静态页面
- My first experience of using unbuntu
- 委托使用
- 连续调用
- 《Linux内核情景分析》阅读笔记
- 第三章 动态网页基础
- Android ddms