文档章节

ios开发之iOS的数据库知识

鹿微微鹿
 鹿微微鹿
发布于 2016/05/03 20:04
字数 1009
阅读 39
收藏 3

//

//  ViewController.m

//  01-sqlite3的基本使用

//

//  Created by 鹿微微鹿 on 16/5/3.

//  Copyright (c) 2016 鹿微微鹿. All rights reserved.

//

//使用数据库的步骤ios使用的数据库是sqlite3

//UIKi框架并不支持sqlite3,需要导入一个支持sqlite的库

//1.创建一个数据库文件,如果已经有了只需要打开数据库文件

//2.创建一张表

//3.对表的数据进行增删改查



#import "ViewController.h"

#import <sqlite3.h>

@interface ViewController (){

    //声明一个数据库变量

    sqlite3 *_db;

}


@end


@implementation ViewController


- (void)viewDidLoad {

    [super viewDidLoad];

  

    //1.创建数据库

    [self createDB];


    //2.创建表

    [self createTable];

    

    //3.插入数据

    [self insertData];

    

    //4.删除数据

    [self deleteData];

    

    //5.更新数据

    [self updateData];

    

    //6.查找数据

    [self selectData];

}





#pragma mark - 创建/打开数据库

- (void) createDB{

    

    //1.创建数据库的路径(实际开发过程中是沙盒目录下的一个路径);

    const char * path = "/Users/IOS1601/Desktop/my files/网络第一周/day6-数据库/数据库文件/user.sqlite";

    

    //2.打开一个数据库文件(如果数据库不存在就创建一个新的);

    //参数1:数据库文件的路径

    //参数2:指向数据库的指针的地址,代表当前打开或者创建的数据库

    //返回值:打开或者创建是否成功

     int ret = sqlite3_open(path, &_db);

    //3.判断数据库打开创建是否成功

    //SQLITE_OK专门用来判断数据库操作成功的宏

    if (ret == SQLITE_OK) {

        

        NSLog(@"数据库打开/创建成功");

        

    }else{

        

        NSLog(@"数据库打开/创建失败");

        

    }

}

#pragma mark - 创建表

- (void)createTable{

    

    //1.创建一个创建表的sql语句

    const char *sql = "CREATE TABLE  IF NOT EXISTS  t_user(id integer PRIMARY KEY AUTOINCREMENT,name text NOT NULL,age integer NOT NULL DEFAULT 22,score real DEFAULT 0); ";

    //sqlite3_exec 专门用来执行DDLDML语句的方法

    //DQL语句不可以使用这个函数;

    //参数1:数据库(必须是已经打开的数据库);

    //参数2:需要执行的sql语句

    //参数5:错误信息

    //返回值:是否成功执行sql语句

    //2.执行创建表的sql语句;

   int ret = sqlite3_exec(_db, sql, NULL, NULL, NULL);

    

    //3.判断表是否创建成功

    if (ret == SQLITE_OK) {

        

        NSLog(@"创建成功");

    }else{

        

        NSLog(@"创建表失败");

    }

    

    

}


#pragma mark - 插入数据

- (void) insertData{

    //1.创建插入数据的sql语句

    const char *sql = "INSERT INTO t_user (name,age,score) VALUES ('fanjuan',22,99);";

    

    

    //一次插入多条数据

    NSMutableString *mstr = [NSMutableString string];

    

    for (int i=0; i<20; i++) {

        NSString *str = [NSString stringWithFormat:@"INSERT INTO t_user (name,age,score) VALUES ('fanjuan%d',%d,%f);",i,arc4random() % 10 + 10,(float)(arc4random()%101)];

        

        [mstr appendString:str];

    }

    

    const char *sql2 = [mstr UTF8String];

    //2.执行插入数据的sql语句

    int ret = sqlite3_exec(_db, sql2, NULL, NULL, NULL);

    

    

    

    //3.判断是否成功

    if (ret == SQLITE_OK) {

        NSLog(@"插入数据成功");

    }else{

        NSLog(@"插入数据失败");

    }

    

    

}

#pragma mark - 删除数据

- (void) deleteData{

    

    //1.创建sql语句

    const char *sql = "DELETE FROM t_user WHERE name ='fanjuan';";

    

    //2.执行sql语句

   int ret =   sqlite3_exec(_db, sql, NULL, NULL, NULL);

    

    //3.判断是否成功

    if (ret == SQLITE_OK) {

        NSLog(@"删除数据成功");

    }else{

        NSLog(@"删除数据失败");

    }

    

}

#pragma mark - 更新数据

- (void)updateData{

    

    //1.创建sql语句

    const char *sql = "UPDATE t_user SET score = 99 WHERE score < 80;";

    

    //2.执行sql语句

    int ret = sqlite3_exec(_db, sql, NULL, NULL, NULL);

    

    //3.判断是否成功

    if (ret == SQLITE_OK) {

        NSLog(@"更新数据成功");

    }else{

        NSLog(@"更新数据失败");

    }

    

}

#pragma mark 查询数据

- (void)selectData{

    

    //1.创建sql语句

    const char *sql = "SELECT * FROM t_user;";

    

    //2.执行语句

    //参数1:数据库

    //参数2:数据查询的sql语句

    //参数3:sql语句的长度(传入-1自动计算)

    //参数4:结果集(专门用来存放结果的容器)

    //参数5:null


   // 创建存放结果集指针

    sqlite3_stmt *stmt;

    int ret=  sqlite3_prepare_v2(_db

                       , sql, -1, &stmt, NULL);

    //3.判断查询是否成功;

    if (ret == SQLITE_OK) {

        

        NSLog(@"查询成功");

    

    //将数据从结果 集中拿出来

        //遍历结果集中的数据

        while (sqlite3_step(stmt) == SQLITE_ROW) {

            

            //拿到查询结果的数据

            //参数1:结果集指针

            //参数2:列标号(0开始)

          const unsigned   char *name = sqlite3_column_text(stmt,1);

            

         int age = sqlite3_column_int(stmt,2);

            

            double score = sqlite3_column_double(stmt, 3);

            NSLog(@"%s-%d-%.2lf",name,age,score);

            

        }

        

    

    }else{

        NSLog(@"查询失败");

    }

    

    

    

}

@end













© 著作权归作者所有

下一篇: 刷新方式
鹿微微鹿
粉丝 8
博文 116
码字总数 71882
作品 0
程序员
私信 提问
那些在学习iOS开发前就应该知道的事(part 1)

英文原文:Things I wish I had known before starting iOS development—Part 1 设计师设计出来了一个不错的引导界面,然而当我看到设计稿的时候,我们的app也没几天就要上线了。这个界面模...

TomatosX
2015/06/12
100
0
使用 Xamarin 开发 iOS 键盘扩展(含网络访问)

版权声明:本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。欢迎转载、使用、重新发布,但务必保留文章署名吕毅(包含链接:https://walterlv.blog.csdn.net/...

walter lv
02/24
0
0
一步一步学习iOS 5编程(第三版)-PDF中文版-正式发布!

目前,这是第一本介绍iOS 5.x 和 Xcode 4.4 的中文版书籍,尤其适合于iOS 编程开发初学者。本教程由 EntLib.com 团队编写。如有任何技术问题,欢迎留言。 电子版 – PDF 格式,支持iPhone、i...

entlib
2012/09/20
791
2
如果只有一个月的时间学 iOS 开发,我们该做些什么?

一年前,我还是一个 Android 开发者。那时候我没有任何 iOS 编程相关的知识,我甚至没用过任何苹果的产品。然而,这已成为过去,现在我已经能同时开发 iOS 和 Android 应用了。 现在,我想给...

oschina
2017/03/09
3.7K
13
【书坊赠书福利——第二期】《iOS 8开发指南》

本周是人邮IT书坊赠书的第二期,第一期参与度极高,微信君在此感谢你们的支持,第一期获奖赠书已全部寄出。 本周赠品 本周,微信君给大家推荐@人民邮电出版社-信息技术分社 刚刚上架的新书《...

生气的散人
2014/09/23
378
0

没有更多内容

加载失败,请刷新页面

加载更多

64.监控平台介绍 安装zabbix 忘记admin密码

19.1 Linux监控平台介绍 19.2 zabbix监控介绍 19.3/19.4/19.6 安装zabbix 19.5 忘记Admin密码如何做 19.1 Linux监控平台介绍: 常见开源监控软件 ~1.cacti、nagios、zabbix、smokeping、ope...

oschina130111
今天
12
0
当餐饮遇上大数据,嗯真香!

之前去开了一场会,主题是「餐饮领袖新零售峰会」。认真听完了餐饮前辈和新秀们的分享,觉得获益匪浅,把脑子里的核心纪要整理了一下,今天和大家做一个简单的分享,欢迎感兴趣的小伙伴一起交...

数澜科技
今天
7
0
DNS-over-HTTPS 的下一代是 DNS ON BLOCKCHAIN

本文作者:PETER LAI ,是 Diode 的区块链工程师。在进入软件开发领域之前,他主要是在做工商管理相关工作。Peter Lai 也是一位活跃的开源贡献者。目前,他正在与 Diode 团队一起开发基于区块...

红薯
今天
8
0
CC攻击带来的危害我们该如何防御?

随着网络的发展带给我们很多的便利,但是同时也带给我们一些网站安全问题,网络攻击就是常见的网站安全问题。其中作为站长最常见的就是CC攻击,CC攻击是网络攻击方式的一种,是一种比较常见的...

云漫网络Ruan
今天
11
0
实验分析性专业硕士提纲撰写要点

为什么您需要研究论文的提纲? 首先当您进行研究时,您需要聚集许多信息和想法,研究论文提纲可以较好地组织你的想法, 了解您研究资料的流畅度和程度。确保你写作时不会错过任何重要资料以此...

论文辅导员
今天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部