iOS: 学习笔记, 使用FMDatabase操作sqlite3

使用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 0;
22 }
23
24 void test01()
25 {
26 NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentationDirectory, NSUserDomainMask, YES);
27 NSString *docpath = [paths objectAtIndex:0];
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=0; i< 10000; 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=0; 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 }

时间: 2024-10-13 11:33:15

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

iOS学习笔记(十六)——数据库操作(使用FMDB)

iOS中原生的SQLite API在使用上相当不友好,在使用时,非常不便.于是,就出现了一系列将SQLite API进行封装的库,例如FMDB.PlausibleDatabase.sqlitepersistentobjects等,FMDB (https://github.com/ccgus/fmdb) 是一款简洁.易用的封装库,这一篇文章简单介绍下FMDB的使用. 在FMDB下载文件后,工程中必须导入如下文件,并使用 libsqlite3.dylib 依赖包. FMDB同时兼容ARC和非ARC工

IOS学习笔记-- SQLite的应用

1 // 2 // HMViewController.m 3 // 02-SQLite的应用 4 // 5 // Created by apple on 14-7-24. 6 // Copyright (c) 2014年 heima. All rights reserved. 7 // 8 9 #import "HMViewController.h" 10 #import <sqlite3.h> 11 12 @interface HMViewController () 13

iOS学习笔记16-数据库SQLite

一.数据库 在项目开发中,通常都需要对数据进行离线缓存的处理,如新闻数据的离线缓存等.离线缓存一般都是把数据保存到项目的沙盒中.有以下几种方式: 1. 归档:NSKeyedArchiver 2. 偏好设置:NSUserDefaults 3. plist存储:writeToFile 上述的使用可以参考iOS学习笔记15-序列化.偏好设置和归档,但上述三种方法都有一个致命的缺点,那就是都无法存储大批量的数据,有性能的问题,在这个时候就是使用数据库的时候. 数据库(Database)是按照数据结构来组

IOS学习笔记 -- Modal和Quartz2D

一. Modal1.Modal的默认效果:新控制器从屏幕的最底部往上钻,直到盖住之前的控制器为止;Modal只是改变了View的现实,没有改变rootViewController 2.常用方法1>.以Modal的形式展示控制器- (void)presentViewController:(UIViewController *)viewControllerToPresent animated: (BOOL)flag completion:(void (^)(void))completion2>.关

iOS学习笔记(2)— UIView用户事件响应

iOS学习笔记(2)— UIView用户事件响应 UIView除了负责展示内容给用户外还负责响应用户事件.本章主要介绍UIView用户交互相关的属性和方法. 1.交互相关的属性 userInteractionEnabled 默认是YES ,如果设置为NO则不响应用户事件,并且把当前控件从事件队列中删除.也就是说设置了userInterfaceEnabled属性的视图会打断响应者链导致该view的subview都无法响应事件. multipleTouchEnabled  默认是NO,如果设置为YE

iOS学习笔记(1)— UIView 渲染和内容管理

iOS学习笔记(1)— UIView 渲染和内容管理 iOS中应用程序基本上都是基于MVC模式开发的.UIView就是模型-视图-控制器中的视图,在iOS终端上看到的.摸到的都是UIView. UIView在屏幕上定义了一个矩形区域和管理区域内容的接口.在运行时,一个视图对象控制该区域的渲染:UIView继承自UIResponder,UIResponder是用来响应事件的类,UIView也具有响应事件的能力.所以说UIView具有三个基本的功能,绘制内容并管理内容的布局,响应用户交互,动画.正是

iOS学习笔记-精华整理

iOS学习笔记总结整理 一.内存管理情况 1- autorelease,当用户的代码在持续运行时,自动释放池是不会被销毁的,这段时间内用户可以安全地使用自动释放的对象.当用户的代码运行告一段 落,开始等待用户的操作,自动释放池就会被释放掉(调用dealloc),池中的对象都会收到一个release,有可能会因此被销毁. 2-成员属性:     readonly:不指定readonly,默认合成getter和setter方法.外界毫不关心的成员,则不要设置任何属性,这样封装能增加代码的独立性和安全

IOS学习笔记 -- 多线程

多线程1.多线程的原理 1>.同一时间,CPU只能处理1条线程,只有1条线程在工作(执行) 2>.多线程并发(同时)执行,其实是CPU快速地在多条线程之间调度(切换) 3>.如果CPU调度线程的时间足够快,就造成了多线程并发执行的假象如果线程非常非常多,会发生: 1>.CPU会在N多线程之间调度,CPU会累死,消耗大量的CPU资源 2>.每条线程被调度执行的频次会降低(线程的执行效率降低) 2.多线程的优缺点 1>.多线程的优点 能适当提高程序的执行效率 能适当提高资源

iOS学习笔记(4) — UITableView的 重用机制

iOS学习笔记(4) — UITableView的 重用机制 UITableView中的cell是动态的,在使用过程中,系统会根据屏幕的高度(480)和每个cell的高度计算屏幕中需要显示的cell的个数.比如,cell高度为90.那么480 / 90 = 5 + 1,也就是说最多有6个cell能显示在屏幕中. 系统会创建1个cel池,无论tableview有多少行都只创建6个cell放在池中.当某行移出屏幕的时候,将这个cell放回在池中:当某行需要显示在屏幕中时,从池中取出一个cell. 重