• 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("
    ");
    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 }
  • 相关阅读:
    程序员如何制定自己的一份年度计划
    【Spring入门系列】篇3:再探IOC
    【Spring入门系列】篇2:SpringIOC入门
    【Spring入门系列】篇1:Spring简介
    适配器模式
    java编程思想之正则表达式
    代理模式
    建造者模式
    抽象工厂模式
    工厂方法模式
  • 原文地址:https://www.cnblogs.com/yaoyu126/p/3766539.html
Copyright © 2020-2023  润新知