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. popoverController(iPad)

    一.设置尺寸 提示:不建议,像下面这样吧popover的宽度和高度写死. 1 //1.新建一个内容控制器 2 YYMenuViewController *menuVc=[[YYMenuViewCont ...

  2. 用for、while、do-while循环输出10句“好好学习,天天向上!”

    #include "stdio.h" void main() { int time; ;time<=;time++) printf("%d.好好学习,天天向上!\n ...

  3. 快学Scala-第八章 继承

    知识点: 1.扩展类 extends关键字,在定义中给出子类需要而超类没有的字段和方法,或者重写超类的方法. 2.重写方法 在Scala中重写一个非抽象方法必须 override 修饰符 public ...

  4. 简易控制中心,angular的简单使用

    <html> <head> <meta charset='utf-8'> <script src="js/angular.js">& ...

  5. 转:Selenium2.0 click()不生效的解决办法

    除了http://573301735.com/?p=5126讲的,昨天又发现一个让我1个小时生不如死的问题,就是使用两个不同的配置文件来初始化driver,findelement方法获取到的坐标居然不 ...

  6. linux下如何修改iptables开启80端口

    linux下如何修改iptables开启80端口   最近在做本地服务器的环境,发现网站localhost能正常访问,用ip访问就访问不了,经常使用CentOS的朋友,可能会遇到和我一样的问题.开启了 ...

  7. EnglishWords----1

    upon在...上面 upright垂直的,直立的 upward向上的 outward外面的,向外的 downward向下的 vertical垂直的 parallel平行的 sow播种 cut切 ch ...

  8. hdu_2546_饭卡(01背包)

    题目连接:hdu_2546_饭卡 题意:中文,不解释 题解:先拿5元来买最贵的,最后就是一个01背包,这里也算用到贪心的思想 #include<bits/stdc++.h> #define ...

  9. TCP/IP模型各个层次的功能和协议

      层次名称 功    能 协    议 应用层 (Application Layer) 负责实现一切与应用程序相关的功能,对应OSI参考模型的上三层 FTP(文件传输协议) HTTP(超文本传输协议 ...

  10. 【Android】获取手机中已安装apk文件信息(PackageInfo、ResolveInfo)(应用图片、应用名、包名等)

    众所周知,通过PackageManager可以获取手机端已安装的apk文件的信息,具体代码如下 PackageManager packageManager = this.getPackageManag ...