ios sqlite3简单使用

本文详细介绍如何使用SQLite3进行数据库操作,包括导入头文件、创建数据库、定义存储路径、创建表、查询、添加、修改和删除数据等核心步骤。

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

1.导入sqlite3系统头文件

#import <sqlite3.h>

2.创建变量sqlite3

{
    
    sqlite3 *_db;
}

3.定义储存路径

//首先自定义一个方法,返回我们当前应用程序沙盒目录(也就是说希望数据库保存在哪里)
-(NSString *) dataFilePath{
    
    NSString *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).lastObject;
    
    return [path stringByAppendingPathComponent:@"data.sqlite"];
}

4.创建数据库

//之后在指定位置创建或打开数据库
-(void)creatDatabase{
    
    //在指定位置创建或打开一个数据库
    //SQLITE_OK是sqlite3的一个常量,代表操作执行成功
    if (sqlite3_open([[self dataFilePath] UTF8String], &_db)!=SQLITE_OK) {
    
            NSLog(@"数据库创建失败!");
    
            sqlite3_close(_db);
        }

    NSLog(@"数据库创建成功!");
    [self creatTable];
}

5.创建表

//创建表
-(void)creatTable{
    
    //创建了一张名为myTable的数据库表,其中有一个自增的id,和name,age,sex,weight,address五个属性。
    NSString *createSQL = @"create table if not exists myTable(id integer primary key autoincrement,name text,age integer,sex text,weight integer)";

    char *error;

    if (sqlite3_exec(_db, [createSQL UTF8String], NULL, NULL, &error)!=SQLITE_OK){
        
        NSLog(@"表创建失败");
    }
     NSLog(@"表创建成功!");
    [self insert];
}

6.查询数据

//查询数据
-(void)queryTableData{
    
    NSString *queryStr = @"select * from myTable";

    sqlite3_stmt *stmt;

    if (sqlite3_prepare_v2(_db, [queryStr UTF8String], -1, &stmt, nil) == SQLITE_OK) {
    
        //当查询语句执行成功时,使用sqlite3_step当游标指向每一行SQLITE_ROW时,我们开始读取数据
    
        while (sqlite3_step(stmt)==SQLITE_ROW) {
    
                //sqlite_3_column_text可以读取字符串类型的数据,参数二为column号;sqlite_3column_int读取int类型数据
    
                char *name = (char *)sqlite3_column_text(stmt, 1);
                NSString *nameString = [[NSString alloc] initWithUTF8String:name];
                NSLog(@"nameString==%@",nameString);
    
                
    
                int age = sqlite3_column_int(stmt, 2);
                NSString* ageStr = [NSString stringWithFormat:@"%d",age];
                NSLog(@"ageStr==%@",ageStr);
    
                char *sex = (char *)sqlite3_column_text(stmt, 3);
                NSString *sexString = [[NSString alloc] initWithUTF8String:sex];
                NSLog(@"sexString==%@",sexString);
    
                int weight = sqlite3_column_int(stmt, 4);
                NSString* weightStr = [NSString stringWithFormat:@"%d",weight];
                NSLog(@"weightStr==%@",weightStr);
    
                
    
                char *address = (char *)sqlite3_column_text(stmt, 5);
                NSString *addressString = [[NSString alloc] initWithUTF8String:address];
                NSLog(@"addressString==%@",addressString);
            }

            //释放stmt
            sqlite3_finalize(stmt);
    
        }

    //关闭数据库,释放内存
    sqlite3_close(_db);
}

7.添加数据

//添加数据
-(void)insert{

    NSString* insertStr = @"insert into myTable(name,age,sex,weight)values('老韦','29','男','146')";

    char *error = NULL;//执行sqlite语句失败的时候,会把失败的原因存储到里面

    int result = sqlite3_exec(_db, [insertStr UTF8String], nil, nil, &error);

    if (result == SQLITE_OK) {

         NSLog(@"添加数据成功");
    } else {

         NSLog(@"添加数据失败");
    }
}

8.修改数据

//修改数据
-(void)modify{
    
        //sql语句格式: update 表名 set  列名 = 新参数 where 列名 = 参数   注:前面的 列名 = 新参数 是修改的值, 后面的 列名 = 参数 是需要修改的地方
        //把名字为‘老韦’的部分全部改成‘吉姆’
        NSString* modifyStr = @"update myTable set name = '吉姆' where name  = '老韦'";

        char *errorMesg = NULL;
    
        int result = sqlite3_exec(_db, [modifyStr UTF8String], NULL, NULL, &errorMesg);
    
        if (result == SQLITE_OK) {

             NSLog(@"更改数据成功");
        }else {

            NSLog(@"更改数据失败");
        }
}

9.删除数据

//删除数据
-(void)delete{
    
        //删除表中年龄小于或等于29的数据
        NSString* deleteStr = @"delete from myTable where age <= 29";
    
        char *errorMesg = NULL;
    
        int result = sqlite3_exec(_db, [deleteStr UTF8String], NULL, NULL, &errorMesg);
    
        if (result == SQLITE_OK) {
        
            NSLog(@"删除数据成功");
        }else {
           
            NSLog(@"删除数据失败");
        }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值