http://blog.csdn.net/iunion/article/details/7204625

仅供自己记录使用,

h文件

  1. #import <Foundation/Foundation.h>
  2. #import "FMDatabase.h"
  3. #import "FMDatabaseAdditions.h"
  4. @interface wiDBRoot : NSObject
  5. @property (retain, nonatomic) FMDatabase *DB;
  6. @property (retain, nonatomic) NSString *DBName;
  7. //+ (id)modelWithDBName:(NSString *)dbName;
  8. - (id)initWithDBName:(NSString *)dbName;
  9. // 删除数据库
  10. - (void)deleteDatabse;
  11. // 数据库存储路径
  12. //- (NSString *)getPath:(NSString *)dbName;
  13. // 打开数据库
  14. - (void)readyDatabse;
  15. // 判断是否存在表
  16. - (BOOL) isTableOK:(NSString *)tableName;
  17. // 获得表的数据条数
  18. - (BOOL) getTableItemCount:(NSString *)tableName;
  19. // 创建表
  20. - (BOOL) createTable:(NSString *)tableName withArguments:(NSString *)arguments;
  21. // 删除表-彻底删除表
  22. - (BOOL) deleteTable:(NSString *)tableName;
  23. // 清除表-清数据
  24. - (BOOL) eraseTable:(NSString *)tableName;
  25. // 插入数据
  26. - (BOOL)insertTable:(NSString*)sql, ...;
  27. // 修改数据
  28. - (BOOL)updateTable:(NSString*)sql, ...;
  29. // 整型
  30. - (NSInteger)getDb_Integerdata:(NSString *)tableName withFieldName:(NSString *)fieldName;
  31. // 布尔型
  32. - (BOOL)getDb_Booldata:(NSString *)tableName withFieldName:(NSString *)fieldName;
  33. // 字符串型
  34. - (NSString *)getDb_Stringdata:(NSString *)tableName withFieldName:(NSString *)fieldName;
  35. // 二进制数据型
  36. - (NSData *)getDb_Bolbdata:(NSString *)tableName withFieldName:(NSString *)fieldName;
  37. @end

m文件

    1. #import "wiDBRoot.h"
    2. @interface wiDBRoot ()
    3. - (NSString *)getPath:(NSString *)dbName;
    4. @end
    5. @implementation wiDBRoot
    6. @synthesize DB;
    7. @synthesize DBName;
    8. /*
    9. + (id)modelWithDBName:(NSString *)dbName
    10. {
    11. [[[self alloc] initWithDBName:dbName] autorelease];
    12. return self;
    13. }
    14. */
    15. - (id)initWithDBName:(NSString *)dbName
    16. {
    17. self = [super init];
    18. if(nil != self)
    19. {
    20. DBName = [self getPath:dbName];
    21. WILog(@"DBName: %@", DBName);
    22. }
    23. return self;
    24. }
    25. - (void)dealloc {
    26. [DB close];
    27. [DB release];
    28. [DBName release];
    29. [super dealloc];
    30. }
    31. // 数据库存储路径(内部使用)
    32. - (NSString *)getPath:(NSString *)dbName
    33. {
    34. NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    35. NSString *documentsDirectory = [paths objectAtIndex:0];
    36. return [documentsDirectory stringByAppendingPathComponent:dbName];
    37. }
    38. // 打开数据库
    39. - (void)readyDatabse
    40. {
    41. //BOOL success;
    42. //NSError *error;
    43. //NSFileManager *fileManager = [NSFileManager defaultManager];
    44. //success = [fileManager fileExistsAtPath:self.DBName];
    45. if ([DB databaseExists])
    46. return;
    47. //DB = [FMDatabase databaseWithPath:DBName];
    48. DB = [[FMDatabase alloc] initWithPath:DBName];
    49. if (![DB open])
    50. {
    51. [DB close];
    52. NSAssert1(0, @"Failed to open database file with message '%@'.", [DB lastErrorMessage]);
    53. }
    54. // kind of experimentalish.
    55. [DB setShouldCacheStatements:YES];
    56. }
    57. #pragma mark 删除数据库
    58. // 删除数据库
    59. - (void)deleteDatabse
    60. {
    61. BOOL success;
    62. NSError *error;
    63. NSFileManager *fileManager = [NSFileManager defaultManager];
    64. // delete the old db.
    65. if ([fileManager fileExistsAtPath:DBName])
    66. {
    67. [DB close];
    68. success = [fileManager removeItemAtPath:DBName error:&error];
    69. if (!success) {
    70. NSAssert1(0, @"Failed to delete old database file with message '%@'.", [error localizedDescription]);
    71. }
    72. }
    73. }
    74. // 判断是否存在表
    75. - (BOOL) isTableOK:(NSString *)tableName
    76. {
    77. FMResultSet *rs = [DB executeQuery:@"SELECT count(*) as 'count' FROM sqlite_master WHERE type ='table' and name = ?", tableName];
    78. while ([rs next])
    79. {
    80. // just print out what we've got in a number of formats.
    81. NSInteger count = [rs intForColumn:@"count"];
    82. WILog(@"isTableOK %d", count);
    83. if (0 == count)
    84. {
    85. return NO;
    86. }
    87. else
    88. {
    89. return YES;
    90. }
    91. }
    92. return NO;
    93. }
    94. // 获得表的数据条数
    95. - (BOOL) getTableItemCount:(NSString *)tableName
    96. {
    97. NSString *sqlstr = [NSString stringWithFormat:@"SELECT count(*) as 'count' FROM %@", tableName];
    98. FMResultSet *rs = [DB executeQuery:sqlstr];
    99. while ([rs next])
    100. {
    101. // just print out what we've got in a number of formats.
    102. NSInteger count = [rs intForColumn:@"count"];
    103. WILog(@"TableItemCount %d", count);
    104. return count;
    105. }
    106. return 0;
    107. }
    108. // 创建表
    109. - (BOOL) createTable:(NSString *)tableName withArguments:(NSString *)arguments
    110. {
    111. NSString *sqlstr = [NSString stringWithFormat:@"CREATE TABLE %@ (%@)", tableName, arguments];
    112. if (![DB executeUpdate:sqlstr])
    113. //if ([DB executeUpdate:@"create table user (name text, pass text)"] == nil)
    114. {
    115. WILog(@"Create db error!");
    116. return NO;
    117. }
    118. return YES;
    119. }
    120. // 删除表
    121. - (BOOL) deleteTable:(NSString *)tableName
    122. {
    123. NSString *sqlstr = [NSString stringWithFormat:@"DROP TABLE %@", tableName];
    124. if (![DB executeUpdate:sqlstr])
    125. {
    126. WILog(@"Delete table error!");
    127. return NO;
    128. }
    129. return YES;
    130. }
    131. // 清除表
    132. - (BOOL) eraseTable:(NSString *)tableName
    133. {
    134. NSString *sqlstr = [NSString stringWithFormat:@"DELETE FROM %@", tableName];
    135. if (![DB executeUpdate:sqlstr])
    136. {
    137. WILog(@"Erase table error!");
    138. return NO;
    139. }
    140. return YES;
    141. }
    142. // 插入数据
    143. - (BOOL)insertTable:(NSString*)sql, ...
    144. {
    145. va_list args;
    146. va_start(args, sql);
    147. BOOL result = [DB executeUpdate:sql error:nil withArgumentsInArray:nil orVAList:args];
    148. va_end(args);
    149. return result;
    150. }
    151. // 修改数据
    152. - (BOOL)updateTable:(NSString*)sql, ...
    153. {
    154. va_list args;
    155. va_start(args, sql);
    156. BOOL result = [DB executeUpdate:sql error:nil withArgumentsInArray:nil orVAList:args];
    157. va_end(args);
    158. return result;
    159. }
    160. // 暂时无用
    161. #pragma mark 获得单一数据
    162. // 整型
    163. - (NSInteger)getDb_Integerdata:(NSString *)tableName withFieldName:(NSString *)fieldName
    164. {
    165. NSInteger result = NO;
    166. NSString *sql = [NSString stringWithFormat:@"SELECT %@ FROM %@", fieldName, tableName];
    167. FMResultSet *rs = [DB executeQuery:sql];
    168. if ([rs next])
    169. result = [rs intForColumnIndex:0];
    170. [rs close];
    171. return result;
    172. }
    173. // 布尔型
    174. - (BOOL)getDb_Booldata:(NSString *)tableName withFieldName:(NSString *)fieldName
    175. {
    176. BOOL result;
    177. result = [self getDb_Integerdata:tableName withFieldName:fieldName];
    178. return result;
    179. }
    180. // 字符串型
    181. - (NSString *)getDb_Stringdata:(NSString *)tableName withFieldName:(NSString *)fieldName
    182. {
    183. NSString *result = NO;
    184. NSString *sql = [NSString stringWithFormat:@"SELECT %@ FROM %@", fieldName, tableName];
    185. FMResultSet *rs = [DB executeQuery:sql];
    186. if ([rs next])
    187. result = [rs stringForColumnIndex:0];
    188. [rs close];
    189. return result;
    190. }
    191. // 二进制数据型
    192. - (NSData *)getDb_Bolbdata:(NSString *)tableName withFieldName:(NSString *)fieldName
    193. {
    194. NSData *result = NO;
    195. NSString *sql = [NSString stringWithFormat:@"SELECT %@ FROM %@", fieldName, tableName];
    196. FMResultSet *rs = [DB executeQuery:sql];
    197. if ([rs next])
    198. result = [rs dataForColumnIndex:0];
    199. [rs close];
    200. return result;
    201. }
    202. @end

FMDB的一些基本操作小结的更多相关文章

  1. shell 基本操作小结

    1.echo和if else fi命令 #!/bin/bash echo hello;echo there filename=demo.sh if [ -e "$filename" ...

  2. fmdb 数据库的基本操作

    /** *  创建表 */ - (void)createTable { //1.初始化数据库对象 并且 2.打开数据库 BOOL isOpenSuccess = [self.database open ...

  3. [转载] Python 列表(list)、字典(dict)、字符串(string)常用基本操作小结

    创建列表 sample_list = ['a',1,('a','b')] Python 列表操作 sample_list = ['a','b',0,1,3] 得到列表中的某一个值 value_star ...

  4. Python 列表(list)、字典(dict)、字符串(string)常用基本操作小结

    创建列表 sample_list = ['a',1,('a','b')] Python 列表操作 sample_list = ['a','b',0,1,3] 得到列表中的某一个值 value_star ...

  5. java 对类型的基本操作小结

    1.json 字符串转换成对象 SyncCarriageStatusDTO dto= JSON.parseObject(value,SyncCarriageStatusDTO.class); List ...

  6. 转:Python 列表(list)、字典(dict)、字符串(string)常用基本操作小结

    转自:http://blog.csdn.net/business122/article/details/7536991 创建列表 sample_list = ['a',1,('a','b')] Pyt ...

  7. 一行代码实现FMDB的CURD操作

    上次实现FMDB的CURD基本操作后,用在项目里,每个实体类都要写SQL语句来实现创建表和CURD操作,总觉得太麻烦,然后就想着利用反射和kvc来实现一个数据库操作的基类继承一下,子类只需要继承,然后 ...

  8. Verdi 看波形常用快捷操作

    Verdi看波形的基本操作小结: 快捷键:(大写字母=Shift+小写) g    get, signlas添加信号,显示波形n    next, Search Forward选定信号按指定的值(上升 ...

  9. python就业班-淘宝-目录.txt

    卷 TOSHIBA EXT 的文件夹 PATH 列表卷序列号为 AE86-8E8DF:.│ python就业班-淘宝-目录.txt│ ├─01 网络编程│ ├─01-基本概念│ │ 01-网络通信概述 ...

随机推荐

  1. linux视频学习4(crontab和进程)

    1 . crontab定时任务: 任务调度: 系统在某个时间执行的特定的命令. 分类: 1.系统工作.2.个别的用户工作. 设置任务调度文件: /etc/crontab 1.crontab -e  : ...

  2. jsp ${param.id}用法

    它的取值范围Page,Request,Session,Application. ${param.id} 与输入有关,相对于 request.getParameter("id").意 ...

  3. Loadrunner之文件的下载(八)

    老猪提供: https://mp.weixin.qq.com/s?__biz=MzIwOTMzNDEwNw==&mid=100000013&idx=1&sn=624f5bc74 ...

  4. 学习笔记——策略模式Strategy

    策略模式,与模板模式一样,都是为了将接口和算法实现解耦,但策略模式更主要是整体算法的替换,而模板模式主要是流程一致,部分算法的替换. 个人理解为,一般算法替换,使用策略模式,当算法流程一致,可以提取为 ...

  5. 转:Selenium中的几种等待方式,需特别注意implicitlyWait的用法

    最近在项目过程中使用selenium 判断元素是否存在的时候 遇到一个很坑爹的问题, 用以下方法执行的时候每次都会等待很长一段时间,原因是因为对selenium实现方法了解不足导致一直找不到解决方法. ...

  6. 善用log日志

    #-*- coding:utf-8 -*- import logging logger = logging.getLogger() #定义一个log日志对象 hdlr = logging.FileHa ...

  7. zencart url特殊字符处理

    1. 支持 在后台的seo url 将Outputw3c 改为false 2.删除特殊字符 这对于在少量的zen cart网站上处理少量的特殊字符可能还适用,实际上我们经常在导入产品数据时或者或少会带 ...

  8. Excel 帮助类

    using System; using System.Collections.Generic; using System.Data; using System.Drawing; using Syste ...

  9. sqlserver2008用bat脚本备份时报错因为库名有中横杠【原创】

    提示原因是数据库名字有中横岗“-” 解决方法:用中括号把名字括起来就可以了 call :backupone [数据库名-new] 完整备份脚本如下 @ECHO ON set DATE=%date:/= ...

  10. select, poll, epoll

    select的一 个缺点在于单个进程能够监视的文件描述符的数量存在最大限制,在Linux上一般为1024 http://www.cnblogs.com/bigwangdi/p/3182958.html ...