iOS 原生sqlite3的使用

本文详细介绍了如何在iOS原生开发中集成并使用sqlite3数据库,从安装到数据库操作,包括创建表、插入数据、查询与更新记录等关键步骤,帮助开发者掌握移动端数据存储技术。

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

//
//  ViewController.m
//  sqlite3
//
//  Created by 周玉 on 2017/12/13.
//  Copyright © 2017年 guidekj. All rights reserved.
//

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

#define KUIScreenWidth [UIScreen mainScreen].bounds.size.width
#define KUIScreenHeight [UIScreen mainScreen].bounds.size.height

#define FILE_NAME @"saas.sqlite"
static sqlite3 *db = nil;

@interface ViewController ()
@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    self.title = @"sqlite3";
    
    //DDB
//    [self openDB];
//    [self closeDB];
    
    //DDL
//    [self createTable];
//    [self dropTable];
    
    //DML
//    [self insertData];
//    [self updateData];
//    [self deleteData];
    
    //DQL
    [self queryData];
}

#pragma mark 查询
- (void)queryData{
    sqlite3 *newDB = [self openDB];
    sqlite3_stmt *statement = nil;
    NSString *sqlStr = @"SELECT * FROM SAAS_PERSON";
    int result = sqlite3_prepare_v2(newDB, sqlStr.UTF8String, -1, &statement, NULL);
    if (result == SQLITE_OK) {
        //遍历查询结果
        if (!(sqlite3_step(statement) == SQLITE_DONE)) {
            while (sqlite3_step(statement) == SQLITE_ROW) {
                int ID = sqlite3_column_int(statement, 0);
                const unsigned char *name = sqlite3_column_text(statement, 1);
                const unsigned char *sex = sqlite3_column_text(statement, 2);
                int age = sqlite3_column_int(statement, 3);
                const unsigned char *description = sqlite3_column_text(statement, 4);
                NSLog(@"ID = %d , name = %@ , sex = %@ , age = %d , description = %@",ID,[NSString stringWithUTF8String:(const char *)name],[NSString stringWithUTF8String:(const char *)sex],age,[NSString stringWithUTF8String:(const char *)description]);
            }
        } else {
            NSLog(@"查询语句完成");
        }
    } else {
        NSLog(@"查询语句不合法");
    }
    sqlite3_finalize(statement);
    [self closeDB];
}

#pragma mark 删除数据记录
- (void)deleteData{
    sqlite3 *newDB = [self openDB];
    sqlite3_stmt *statement = nil;
    NSString *sqlStr = @"DELETE FROM SAAS_PERSON WHERE NAME = '王鹏飞'";
    int result = sqlite3_prepare_v2(newDB, sqlStr.UTF8String, -1, &statement, NULL);
    if (result == SQLITE_OK) {
        if (sqlite3_step(statement) == SQLITE_DONE) {
            NSLog(@"删除操作完成");
        }
    } else {
        NSLog(@"删除操作不合法");
    }
    sqlite3_finalize(statement);
    [self closeDB];
}

#pragma mark 更新数据记录
- (void)updateData{
    sqlite3 *newDB = [self openDB];
    sqlite3_stmt *statement = nil;
    NSString *sqlStr = @"UPDATE SAAS_PERSON SET DESCRIPTION = '喜欢运动,旅游' WHERE NAME = '周玉'";
    int result = sqlite3_prepare_v2(newDB, sqlStr.UTF8String, -1, &statement, NULL);
    if (result == SQLITE_OK) {
        if (sqlite3_step(statement) == SQLITE_DONE) {
            NSLog(@"更新信息完成");
        }
    } else {
        //[logging] no such column: DESCRIPT (KEY拼写错误) --- 更新信息不合法
        NSLog(@"更新信息不合法");
    }
    sqlite3_finalize(statement);
    [self closeDB];
}

#pragma mark 新增数据记录
- (void)insertData{
    sqlite3 *newDB = [self openDB];
    sqlite3_stmt *statement = nil;
//    NSString *sqlStr = @"INSERT INTO SAAS_PERSON (NAME , SEX , AGE , DESCRIPTION) VALUES('周玉','男',28,'开朗乐观')";
//    NSString *sqlStr = @"INSERT INTO SAAS_PERSON (NAME , SEX , AGE , DESCRIPTION) VALUES('王鹏飞','女',27,'开朗乐观')";
//    NSString *sqlStr = @"INSERT INTO SAAS_PERSON (NAME , SEX , AGE , DESCRIPTION) VALUES('李梅','女',20,'年轻可爱
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值