使用FMDatabase操作sqlite3数据库非常简单和方便

  1. //
  2. // main.m
  3. // iOSDemo0602_sqlite3
  4. //
  5. // Created by yao_yu on 14-6-2.
  6. // Copyright (c) 2014年 yao_yu. All rights reserved.
  7. //
  8.  
  9. #import <UIKit/UIKit.h>
  10. #import "FMDatabase.h"
  11.  
  12. void test01();
  13. BOOL isfile(NSString *path);
  14. BOOL isdir(NSString *path);
  15.  
  16. int main(int argc, char * argv[])
  17. {
  18. @autoreleasepool {
  19. test01();
  20. }
  21. return ;
  22. }
  23.  
  24. void test01()
  25. {
  26. NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentationDirectory, NSUserDomainMask, YES);
  27. NSString *docpath = [paths objectAtIndex:];
  28. NSString *dbpath = [docpath stringByAppendingPathComponent:@"YY/Data2"];
  29. // NSLog(@"%@", dbpath);
  30. if (!isdir(dbpath)) {
  31. NSFileManager *fileManager = [NSFileManager defaultManager];
  32. [fileManager createDirectoryAtPath:dbpath withIntermediateDirectories:YES attributes:nil error:nil];
  33. }
  34.  
  35. NSString *dbfile = [dbpath stringByAppendingPathComponent:@"data.db"];
  36. NSLog(@"%@", dbfile);
  37.  
  38. //初始化
  39. FMDatabase *db = [FMDatabase databaseWithPath:dbfile];
  40. //打开数据库
  41. [db open];
  42.  
  43. //删除表
  44. [db executeUpdate:@"drop table persons"];
  45.  
  46. //添加表
  47. [db executeUpdate:@"create table persons(id, name)"];
  48.  
  49. //删除原有数据
  50. [db executeUpdate:@"delete from persons"];
  51.  
  52. //使用事务添加数据
  53. [db beginTransaction];
  54. for(int i=; i< ; i++)
  55. {
  56. [db executeUpdate:@"insert into persons values(?,?)", [NSString stringWithFormat:@"%d", i], [NSString stringWithFormat:@"第%d", i]];
  57. }
  58. [db commit];
  59.  
  60. //数据查询
  61. FMResultSet *cursor = [db executeQuery:@"select * from persons"];
  62. int nCols = cursor.columnCount;
  63. while ([cursor next]) {
  64. for (int i=; i<nCols; i++) {
  65. printf("%s ", [[cursor stringForColumnIndex:i] UTF8String]);
  66. }
  67. printf("\n");
  68. }
  69. cursor = nil;
  70.  
  71. //关闭数据库
  72. [db close];
  73.  
  74. //删除数据库测试文件
  75. [[NSFileManager defaultManager] removeItemAtPath:dbfile error:nil];
  76.  
  77. }
  78.  
  79. BOOL isfile(NSString *path)
  80. {
  81. NSFileManager *fileManager = [NSFileManager defaultManager];
  82. BOOL isdir = NO;
  83. if ([fileManager fileExistsAtPath:path isDirectory: &isdir]) {
  84. return isdir == NO;
  85. }
  86. return NO;
  87. }
  88.  
  89. BOOL isdir(NSString *path)
  90. {
  91. NSFileManager *fileManager = [NSFileManager defaultManager];
  92. BOOL isdir = NO;
  93. if ([fileManager fileExistsAtPath:path isDirectory: &isdir]) {
  94. return isdir == YES;
  95. }
  96. return NO;
  97. }

iOS: 学习笔记, 使用FMDatabase操作sqlite3的更多相关文章

  1. IOS学习笔记25—HTTP操作之ASIHTTPRequest

    IOS学习笔记25—HTTP操作之ASIHTTPRequest 分类: iOS2012-08-12 10:04 7734人阅读 评论(3) 收藏 举报 iosios5网络wrapper框架新浪微博 A ...

  2. IOS学习笔记25—HTTP操作之ASIHTTPRequest(一)

    ASIHTTPRequest是一个第三方开源项目,在现在的IOS应用中多使用到这个开源类库来提供网络操作,相比于SDK提供的网络操作类库,ASIHTTPRequest使用上更加方便.效率更高,同时功能 ...

  3. IOS学习笔记48--一些常见的IOS知识点+面试题

      IOS学习笔记48--一些常见的IOS知识点+面试题   1.堆和栈什么区别? 答:管理方式:对于栈来讲,是由编译器自动管理,无需我们手工控制:对于堆来说,释放工作由程序员控制,容易产生memor ...

  4. iOS学习笔记17-FMDB

    上一节我已经介绍了SQLite的简单使用,不了解的可以提前去看一下iOS学习笔记16-数据库SQLite,这节我们来讲下FMDB. 一.FMDB介绍 FMDB是一种第三方的开源库,FMDB就是对SQL ...

  5. iOS学习笔记16-数据库SQLite

    一.数据库 在项目开发中,通常都需要对数据进行离线缓存的处理,如新闻数据的离线缓存等.离线缓存一般都是把数据保存到项目的沙盒中.有以下几种方式: 归档:NSKeyedArchiver 偏好设置:NSU ...

  6. iOS学习笔记17-FMDB你好!

    上一节我已经介绍了SQLite的简单使用,不了解的可以提前去看一下iOS学习笔记16-数据库SQLite,这节我们来讲下FMDB. 一.FMDB介绍 FMDB是一种第三方的开源库,FMDB就是对SQL ...

  7. iOS学习笔记-精华整理

    iOS学习笔记总结整理 一.内存管理情况 1- autorelease,当用户的代码在持续运行时,自动释放池是不会被销毁的,这段时间内用户可以安全地使用自动释放的对象.当用户的代码运行告一段 落,开始 ...

  8. iOS学习笔记总结整理

    来源:http://mobile.51cto.com/iphone-386851_all.htm 学习IOS开发这对于一个初学者来说,是一件非常挠头的事情.其实学习IOS开发无外乎平时的积累与总结.下 ...

  9. IOS学习笔记(四)之UITextField和UITextView控件学习

    IOS学习笔记(四)之UITextField和UITextView控件学习(博客地址:http://blog.csdn.net/developer_jiangqq) Author:hmjiangqq ...

随机推荐

  1. NIO组件Selector工作机制详解(下)

    转自:http://blog.csdn.net/haoel/article/details/2224069 五.  迷惑不解 : 为什么要自己消耗资源? 令人不解的是为什么我们的Java的New I/ ...

  2. Making the Elephant Dance: Strategic Enterprise Analysis

    http://www.modernanalyst.com/Resources/Articles/tabid/115/ID/2934/categoryId/23/Making-the-Elephant- ...

  3. NSLayoutConstraint-代码实现自己主动布局的函数使用方法说明

    [NSLayoutConstraint constraintWithItem:view1 attribute:NSLayoutAttributeLeft relatedBy:NSLayoutRelat ...

  4. Eclipse快捷键调试

    Eclipse中有如下一些和运行调试相关的快捷键Ctrl+Shift+B:在当前行设置断点或取消设置的断点  F11:调试最后一次执行的程序    Ctrl+F11:运行最后一次执行的程序F5:跟踪到 ...

  5. [D3] 7. Quantitative Scales

    # Quantitative Scales var colorScale = d3.scale.quantile() .domain([d3.max(dataset) / 4, d3.max(data ...

  6. Android 解决双卡双待手机解析短信异常

    开发中,难免会遇到各种各样的适配问题,尤其是经过深度修改定制过的系统,有的无论是软硬件上都有很大的区别,这里不得不提到一种奇葩的机型,没错,那就是双卡双待的手机(比如XT800, A60, S8600 ...

  7. How to manage and balance “Huge Data Load” for Big Kafka Clusters---reference

    1. Add Partition Tool Partitions act as unit of parallelism. Messages of a single topic are distribu ...

  8. spring beans源码解读之--bean definiton解析器

    spring提供了有两种方式的bean definition解析器:PropertiesBeanDefinitionReader和XmLBeanDefinitionReader即属性文件格式的bean ...

  9. 软件版本中的Alpha,Beta,RC,Trial是什么意思?

    版本号: V(Version):即版本,通常用数字表示版本号.(如:EVEREST Ultimate v4.20.1188 Beta ) Build:用数字或日期标示版本号的一种方式.(如:VeryC ...

  10. WebService学习笔记系列(一)

    webservice主要是解决两个系统或者两个应用程序之间的远程调用,它提供了一种通过web方式访问的api,调用是跨语言.跨平台的. webservice的客户端与服务端进行交互的时候使用xml来传 ...