数据持久化三之SQlite3

使用数据库的步骤ios使用的数据库是sqlite3ios

UIKit框架并不支持sqlite3,须要导入一个支持sqlite的库sql

1.建立一个数据库文件,若是已经有了只须要打开数据库文件数据库

2.建立一张表网络

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

#import "ViewController.h"框架

#import <sqlite3.h>dom

@interface ViewController (){函数

    //声明一个数据库变量.net

    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/fanjuan/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 专门用来执行DDL,DML语句的方法

    //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

相关文章
相关标签/搜索