iOS SQLite使用

SQLite简介
SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。

SQLite3
在XCode工程中,打开targets,在Build Phases下导入Libsqlite.tbd,在需要使用sqlite3的位置导入头文件即可。

使用SQLite的时候我们要注意语法格式的规范,按照要求来:

掌握常用的SQL语句:
创建表:”create table if not exists 表名(id intager primary key, 数据对象1 对象类型text,数据对象2 对象类型BLOB)”
添加数据:”insert into 表名 values(null,?,?)”
删除数据 : “delete from 表名 where intTeger = ?”
修改数据: “update 表名 set 数据对象1 = ?,数据对象2 = ? where intTeger”
查询获取数据:”select *from 表名”

具体的代码实现如下:

我们先创建要被它使用到的数据对象类型

#import <Foundation/Foundation.h>

@interface ClassRoom : NSObject

@property(nonatomic,assign)NSInteger intTeger;
@property(nonatomic,strong)NSString *name,*age;


之后 我们要在业务处理层的.h文件中写下具体的语法格式

// 导入数据对象
#import "ClassRoom.h"
// 导入库
#import <sqlite3.h>

@interface DataBase : NSObject
{
    sqlite3 *sqliteDB;
}

// 单列
+(instancetype)initDataBase;

// 初始数据库
-(void)initData;
// 创建数据库表格
-(void)creatTable;
// 添加数据
-(void)addSqlite:(ClassRoom *)theData;
// 删除数据
-(void)deleteData:(NSInteger *)theId;
// 修改数据
-(void)changeData:(ClassRoom *)theData;
// 查询数据
-(NSMutableArray *)dataArray;
// 关闭数据库
-(void)closeData;

接着 在业务处理层的.m文件中为其写下具体的代码

@implementation DataBase

// 创建单例变量
static DataBase *database;
// 单列
+(instancetype)initDataBase
{
    if (!database)
    {
        database = [[DataBase alloc] init];
    }
    return database;
}
// 初始数据库
-(void)initData
{
    // 创建Document目录
    NSString *theStrPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)objectAtIndex:0];
    // 创建数据库表名的路径
    NSString *theStr = [theStrPath stringByAppendingString:@"/1508E.db"];
    
    if (sqlite3_open([theStr UTF8String],&sqliteDB) == SQLITE_OK)
        
    {
        NSLog(@"数据库打开成功");
        // 创建表格
        [self creatTable];
    }
    else
    {
        NSLog(@"打开失败");
    }
}
// 创建数据库表格
-(void)creatTable
{
    // 创建sql语句 格式: creat table if not exists 表名 (主键id integer primary key, 加上所有的用到的数据)
    const char *sql = "creat table if not exists classroom(inTeger integer primary key,name text, age text)";
    NSLog(@"sql>>>>%s",sql);
    
    // 预编译指针
    sqlite3_stmt *stmt;
    // 绑定预编译指针
    sqlite3_prepare_v2(sqliteDB, sql, -1, &stmt, nil);
    
}
// 添加数据
-(void)addSqlite:(ClassRoom *)theData
{
   // 创建sql语句
    const char *sql = "insert into classroom values(null,?,?)";
    // 预编译指针
    sqlite3_stmt *stmt;
    // 绑定预编译指针
    sqlite3_prepare_v2(sqliteDB, sql, -1, &stmt, nil);
    // 绑定占位符
    sqlite3_bind_text(stmt, 1, [theData.name UTF8String], -1, SQLITE_TRANSIENT);
    
    sqlite3_bind_text(stmt, 2, [theData.age UTF8String], -1, SQLITE_TRANSIENT);
    
    //执行预编译指针
    sqlite3_step(stmt);
    // 销毁预编译指针
    sqlite3_finalize(stmt);

    
}
// 删除数据
-(void)deleteData:(NSInteger *)theId
{
    // 创建sql语句
    const char *sql = "delete from classroom where inTeger = ?";
    
    // 预编译指针
    sqlite3_stmt *stmt;
    // 绑定预编译指针
    sqlite3_prepare_v2(sqliteDB, sql, -1, &stmt, nil);
    // 绑定占位符
    sqlite3_bind_int(stmt, 1, (int) theId);
    
    //执行预编译指针
    sqlite3_step(stmt);
    // 销毁预编译指针
    sqlite3_finalize(stmt);
}
// 修改数据
-(void)changeData:(ClassRoom *)theData
{
    // sql语句
    const char *sql = "updata classroom set name = ?,age = ? where inTeger";
    // 预编译指针
    sqlite3_stmt *stmt;
    // 绑定预编译指针
    sqlite3_prepare_v2(sqliteDB, sql, -1, &stmt, nil);
    // 绑定占位符
    sqlite3_bind_text(stmt, 1, [theData.name UTF8String], -1, SQLITE_TRANSIENT);
    
    sqlite3_bind_text(stmt, 2, [theData.age UTF8String], -1, SQLITE_TRANSIENT);
    
    sqlite3_bind_int(stmt, 3, (int)theData.intTeger);

    
    //执行预编译指针
    sqlite3_step(stmt);
    // 销毁预编译指针
    sqlite3_finalize(stmt);
    
}
// 查询数据
-(NSMutableArray *)dataArray
{
    
    const char *sql = "select *from classroom";
    
    // 预编译指针
    sqlite3_stmt *stmt;
    // 绑定预编译指针
    sqlite3_prepare_v2(sqliteDB, sql, -1, &stmt, nil);
    NSMutableArray *arr = [NSMutableArray array];
    
    // 绑定占位符
    
    //执行预编译指针
    while (sqlite3_step(stmt)== SQLITE_ROW)
 
    {
        ClassRoom *room = [[ClassRoom alloc] init];
        
        room.intTeger = sqlite3_column_int(stmt, 0);
        
        room.name = [NSString stringWithUTF8String:(const char *)sqlite3_column_text(stmt, 1)];
        room.age = [NSString stringWithUTF8String:(const char *)sqlite3_column_text(stmt, 2)];
        
        [arr addObject:room];
    }
   
    // 销毁预编译指针
    sqlite3_finalize(stmt);
    
    return arr;
}
// 关闭数据库
-(void)closeData
{
    sqlite3_close(sqliteDB);
}


    原文作者:J_mine
    原文地址: https://www.jianshu.com/p/5f1931011d9f
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞