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

本文介绍如何使用FMDatabase库来简化iOS应用中SQLite3数据库的操作。通过示例代码展示了创建数据库、执行增删改查操作及事务处理的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用FMDatabase读写sqlite3数据库非常方便和简单.

//
//  main.m
//  iOSDemo0602_sqlite3
//
//  Created by yao_yu on 14-6-2.
//  Copyright (c) 2014年 yao_yu. All rights reserved.
//

#import <UIKit/UIKit.h>
#import "FMDatabase.h"

void test01();
BOOL isfile(NSString *path);
BOOL isdir(NSString *path);

int main(int argc, char * argv[])
{
    @autoreleasepool {
        test01();
    }
    return 0;
}

void test01()
{
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentationDirectory, NSUserDomainMask, YES);
    NSString *docpath = [paths objectAtIndex:0];
    NSString *dbpath = [docpath stringByAppendingPathComponent:@"YY/Data2"];
//    NSLog(@"%@", dbpath);
    if (!isdir(dbpath)) {
        NSFileManager *fileManager = [NSFileManager defaultManager];
        [fileManager createDirectoryAtPath:dbpath withIntermediateDirectories:YES attributes:nil error:nil];
    }
    
    NSString *dbfile = [dbpath stringByAppendingPathComponent:@"data.db"];
    NSLog(@"%@", dbfile);
    
    //初始化
    FMDatabase *db = [FMDatabase databaseWithPath:dbfile];
    //打开数据库
    [db open];
    
    //删除表
    [db executeUpdate:@"drop table persons"];
    
    //添加表
    [db executeUpdate:@"create table persons(id, name)"];
    
    //删除原有数据
    [db executeUpdate:@"delete from persons"];
    
    //使用事务添加数据
    [db beginTransaction];
    for(int i=0; i< 10000; i++)
    {
        [db executeUpdate:@"insert into persons values(?,?)", [NSString stringWithFormat:@"%d", i], [NSString stringWithFormat:@"第%d", i]];
    }
    [db commit];
    
    //数据查询
    FMResultSet *cursor = [db executeQuery:@"select * from persons"];
    int nCols = cursor.columnCount;
    while ([cursor next]) {
        for (int i=0; i<nCols; i++) {
            printf("%s ", [[cursor stringForColumnIndex:i] UTF8String]);
        }
        printf("\n");
    }
    cursor = nil;
    
    //关闭数据库
    [db close];
    
    //删除数据库测试文件
    [[NSFileManager defaultManager] removeItemAtPath:dbfile error:nil];
    
}

BOOL isfile(NSString *path)
{
    NSFileManager *fileManager = [NSFileManager defaultManager];
    BOOL isdir = NO;
    if ([fileManager fileExistsAtPath:path isDirectory: &isdir]) {
        return isdir == NO;
    }
    return NO;
}

BOOL isdir(NSString *path)
{
    NSFileManager *fileManager = [NSFileManager defaultManager];
    BOOL isdir = NO;
    if ([fileManager fileExistsAtPath:path isDirectory: &isdir]) {
        return isdir == YES;
    }
    return NO;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值