首页 > 代码库 > iOS: 学习笔记, 使用FMDatabase操作sqlite3

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 }