IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> IOS开发之——数据库-SQLite3(03) -> 正文阅读

[大数据]IOS开发之——数据库-SQLite3(03)

一 概述

  • SQLite官网及介绍
  • SQLite常见方法说明
  • SQLite示例

二 SQLite官网及介绍

2.1 官网地址

  • 官网地址主页:https://www.sqlite.org/index.html
  • C/C++ SQLite使用介绍:https://www.sqlite.org/cintro.html

2.2 SQLite使用说明

  • 数据库,纯C语言,轻量级
  • 适用于移动设备(安卓和IOS)及终端平台中
  • 开源免费,任何人都可以使用

三 SQLite常见方法说明

打开C/C++介绍文档,可以看到SQLite常用方法

3.1 sqlite3(数据库连接对象)

sqlite3 *db = NULL; 

3.2 sqlite_stmt(用来取出查询结果)

sqlite3_stmt *stmt=NULL;
int status=sqlite3_prepare(db, sql, -1, &stmt, NULL);

3.3 sqlite3_open(打开数据库连接)

int status=sqlite3_open(filename.UTF8String, &db);

3.4 sqlite3_close(关闭数据库)

sqlite3_close(db);

3.5 sqlite3_prepare(查询或更新数据库)

 sqlite3_stmt *stmt=NULL;
 int status=sqlite3_prepare(db, sql, -1, &stmt, NULL);

3.6 sqlite3_bind(将应用程序数据存储到SQL参数中)

sqlite3_stmt *stmt;
sqlite3_bind_text(stmt, 1, "白菜", -1, NULL);
sqlite3_bind_int(stmt, 2, 27);

3.7 sqlite3_stemp(执行到下一个结果行或完成)

if(sqlite3_step(stmt) != SQLITE_DONE) {
    NSLog(@"插入数据错误");
}

3.8 sqlite3_column(当前结果行中的列值)

int _id = sqlite3_column_int(stmt, 0);

3.9 sqlite3_finalize(销毁sqlite3_stmt *对象,执行析构函数)

sqlite3_finalize(stmt);

3.10 sqlite3_exec(包函数,可以是任意SQL语句,比如CRUD操作)

int result = sqlite3_exec(db, sql, NULL, NULL, &errorMsg);

四 SQLite示例

如下所示,项目结构

4.1 Shop(数据库实体类)

4.2 SQLite3Tools(将ViewControl中的操作封装到了此类中)

SQLite3Tools.h

#import <Foundation/Foundation.h>

@class Shop;

@interface SQLite3Tools : NSObject

//创建表格
+(void)createTable;
//插入数据
+(void)insertTable:(Shop *)shop;
//查询数据
+(NSMutableArray *)selectTableAll;
//更新数据
+(void)updateTable;
//删除表格数据
+(void)deleteTable;

@end

SQLite3Tools.m

#import "SQLite3Tools.h"
#import <sqlite3.h>
#import "Shop.h"

@implementation SQLite3Tools
static sqlite3 *db;
+(void)initialize
{
    //打开数据库(连接数据库)
    NSString *filename=[[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)lastObject]stringByAppendingPathComponent:@"shops.sqlite"];
    //如果数据库文件不存在,系统会自动创建文件自动初始化数据库

    int status=sqlite3_open(filename.UTF8String, &db);
    if (status==SQLITE_OK) {//打开成功
        NSLog(@"打开数据库成功");
    }else{
        NSLog(@"打开数据库失败");
    }
}
//创建表
+(void)createTable
{
        //创建表
        const char *sql="create table if not exists t_shop(id integer primary key,name text not null,price real);";
        char *errmsg=NULL;
        sqlite3_exec(db, sql, NULL, NULL, &errmsg);
        if (errmsg) {
            NSLog(@"创表失败---%s",errmsg);
        }else{
            NSLog(@"创表成功---%s",errmsg);
        }
}
//插入数据
+(void)insertTable:(Shop *)shop
{
    NSString *sql = [NSString stringWithFormat:@"INSERT INTO t_shop(name, price) VALUES ('%@', %f);",shop
                     .name, shop.price];
    sqlite3_exec(db, sql.UTF8String, NULL, NULL, NULL);
}
//查询数据
+(NSMutableArray *)selectTableAll
{
    NSMutableArray *array=[NSMutableArray array];
    
    const char *sql="select name,price from  t_shop;";
    //stmt用来取出查询结果的
    sqlite3_stmt *stmt=NULL;
    int status=sqlite3_prepare(db, sql, -1, &stmt, NULL);
    if (status==SQLITE_OK) { //准备成功-- SQL语句正确
        while(sqlite3_step(stmt)==SQLITE_ROW) {
            Shop *shop=[[Shop alloc]init];
            const unsigned char *name=sqlite3_column_text(stmt, 0);
            const unsigned char *price=sqlite3_column_text(stmt, 1);
            shop.name=[NSString stringWithUTF8String:name];
            shop.price=[[NSString stringWithUTF8String:price] floatValue];
            [array addObject:shop];
        }
    }
    return array;
}

//更新数据
+(void)updateTable
{
    NSString *sql = [NSString stringWithFormat:@"update t_shop set price=%u;",arc4random()%5];
    sqlite3_exec(db, sql.UTF8String, NULL, NULL, NULL);
}
//删除表格数据
+(void)deleteTable
{
    NSString *sql = [NSString stringWithFormat:@"delete from t_shop"];
    sqlite3_exec(db, sql.UTF8String, NULL, NULL, NULL);
}
@end

4.3 ViewController中按钮对象的操作

#import "ViewController.h"
#import "SQLite3Tools.h"
#import "Shop.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
}
//创建表
- (IBAction)createTableBtn:(UIButton *)sender
{
    [SQLite3Tools createTable];
}
//插入数据

- (IBAction)insertTableBtn
{
    Shop *shop=[[Shop alloc]init];
    shop.name=[NSString stringWithFormat:@"白菜-%d",arc4random() % 200];
    shop.price=(arc4random() % 10);
    
    [SQLite3Tools insertTable:shop];
    //执行查询
    [self selectTableBtn];

}
//查询数据库
- (IBAction)selectTableBtn
{
   NSMutableArray *array= [SQLite3Tools selectTableAll];
    for (Shop *shop in array) {
        NSLog(@"shop:name=%@,price=%f",shop.name,shop.price);
    }
}
//更新数据库
- (IBAction)updateTableBtn
{
    NSLog(@"更新前数据:");
    [self selectTableBtn];
    [SQLite3Tools updateTable];
    NSLog(@"更新后数据:");
    [self selectTableBtn];
}
//删除表格数据
- (IBAction)deleteTableBtn
{
    NSLog(@"删除前数据:");
    [self selectTableBtn];
    [SQLite3Tools deleteTable];
    NSLog(@"删除后数据:");
    [self selectTableBtn];
}
@end

4.4 效果图(点击后,可在控制台和Navicat中查看结果)


其中,sqlite文件,可在沙盒的Documents下找到对应的.sqlite,使用Navicat打开即可

五 参考

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-04-24 09:31:36  更:2022-04-24 09:32:01 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 2:58:42-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码