SQLite

本文通过一个具体的iOS应用示例,展示了如何使用SQLite进行数据库操作,包括创建数据库和表、插入数据、更新记录及查询数据等基本步骤。

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

使用SQLite之前 需要添加libsqlite3.0.tbd

#import "ViewController.h"
#import <sqlite3.h>

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    //1.创建一个空的数据库文件
    NSString *docPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject];
    NSString *dataBasePath = [docPath stringByAppendingPathComponent:@"test1.sqlite"];
    NSLog(@"%@", dataBasePath);
    //数据库句柄
    sqlite3 *dataBase;
    //如果没有数据库文件 就穿件,否则就打开
    int ret = sqlite3_open([dataBasePath cStringUsingEncoding:NSUTF8StringEncoding], &dataBase);
    if (ret != SQLITE_OK) {
        NSLog(@"数据库创建失败!");
        return;
    }

    //下面的操作除了查询操作,剩余的基本都用sqlite3_exec(execute)
    //2.创建空表(SQL语句)
    char *errmsg;
    const char *sql = "create table if not exists person (id integer primary key, name text, age integer)";
    ret = sqlite3_exec(dataBase, sql, NULL, NULL, &errmsg);
    if (ret != SQLITE_OK) {
        NSLog(@"表创建失败 %s", errmsg);
        return;
    }

    //3.插入数据
    const char *insertSql = "insert into person (name, age) values ('zuokai', 20)";
    ret = sqlite3_exec(dataBase, insertSql, NULL, NULL, &errmsg);
    if (ret != SQLITE_OK) {
        NSLog(@"插入数据失败:%s", errmsg);
        return;
    }
    //4.更新
    const char *updateSql = "update person set name = 'hah' where id = 1";
    ret = sqlite3_exec(dataBase, updateSql, NULL, NULL, &errmsg);
    if (ret != SQLITE_OK) {
        NSLog(@"更新失败:%s", errmsg);
        return;
    }
    //5.查询
    const char *querySql = "select * from person";
    sqlite3_stmt *stmt;
    ret = sqlite3_prepare_v2(dataBase, querySql, -1, &stmt, NULL);
    if (ret == SQLITE_OK) {
        //从stmt变量中获取所有记录
        while (sqlite3_step(stmt) == SQLITE_ROW) {
            //有记录的(根据不同的字段类型选不同的函数)
            //id(从stmt中取数据+指定哪一列)
            int personID = sqlite3_column_int(stmt, 0);
            //name
            char *name = (char *)sqlite3_column_text(stmt, 1);
            //age
            int age = sqlite3_column_int(stmt, 2);
            NSLog(@"id:%d, name:%s, age:%d", personID, name, age);
        }
    }

    //6.收尾工作(对数据库操作完,断开连接)
    sqlite3_close(dataBase);
}


- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值