• iOS:本地数据库sqlite的介绍


    一、数据库的概念:
    1.、什么是数据库
      SQL Server 2010、Oracle、MySQL
      关系数据库
      NoSQL数据库-非关系型数据库
     
      数据库主要由表组成
      表由字段组成
      数据 就是表中的记录
     
      表间的关系:一对一、一对多(订单:订单的头和订单明细)
      外键 
      主键:建立索引,不能重复
     
    2、SQL(结构化查询语言)语句
      A、数据操作的SQL语句:
         2.1 查询 
           select(字段名) from(表名); 
           where 子句:定义查询条件  
           排序:order by 字段名 (asc,desc) 
           分组:group by 字段名    
        2.2 删除 
          delete from(表名)  where name = @“admin”;   
        2.3 插入
              insert into(表名)(字段列表) values(字段列表对应的字段值);
        2.4 更新
                 update(表名) set 字段=值 where 子句;
     
      B、对数据库维护的SQL语句:
        创建表:
        create table (表名) (定义字段:字段名 字段类型);
     
               sqlite3 数据库名    //在终端下进入某一个本地的数据库(如果不存在就自动创建一个)
            .schema 表名  //在终端下可以快速查看某一个表中的所有字段
            .table        //在终端下可以查看创建的所有表   
        .exit/.quit         //在终端下退出某一个数据库 
     
     二、SQLite的基本使用
     
    SQLite支持的常见数据类型如下所示。
    –INTEGER 有符号的整数类型
    –REAL 浮点类型
    –TEXT 字符串类型,采用UTF-8和UTF-16字符编码
    –BLOB 二进制大对象类型,能够存放任何二进制数据
     
    (C语言中)使用步骤:
    1.新建项目时,先导入系统框架(C语言). (libsqlite3)
     
    2.头文件#import<sqlite3.h>
     
    3. sqlite3_open(fileName.UTF8String, &_db); 打开或者创建一个数据

        *_db自己定义一个sqlite3的成员变量.进行增删改查时要用

     
    4.sqlite3_exec(_db, sql, NULL, NULL,&error);  //不带结果集的语句,只是对表做操作,不会返回出结果
    *该函数可进行insert,delete,update操作.
     
    5.查询操作select. //带结果集的查询语句,会返回出结果,从表中查询到的数据都会放到stmt结构体中
    *sqlite3_prepare_v2(_db, sql, -1, &stmt, NULL);做查询前准备,检测SQL语句是否正确.
    *sqlite3_step(stmt) 提取查询到的数据,一次提取一条.//通过循环可以取出所有数据
    *sqlite3_column_text(stmt, 0)取出第0列的数据.
     
    6.关闭数据库 sqlite3_close(sqlite3 *);
     
    ————————————————————————————————————————————————————
    ————————————————————————————————————————————————————
    执行带参数的SQL语句

    NSString *sqlStr = @"INSERT OR REPLACE INTO note (cdate,content) VALUES (?,?)";

    sqlite3_stmt *statement;
    //预处理过程,产生结果集
    if (sqlite3_prepare_v2(db, [sqlStr UTF8String], -1, &statement, 

    NULL) == SQLITE_OK)

     {

     NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
      NSString *nsdate = [dateFormatter stringFromDate:model.date]; 

      //绑定参数开始
      sqlite3_bind_text(statement, 1, [nsdate UTF8String], -1, NULL);  sqlite3_bind_text(statement, 2, [model.content UTF8String], 

    -1,    NULL);

      //执行插入
    if (sqlite3_step(statement) != SQLITE_DONE)

     {  

    NSAssert(NO, @"插入数据失败。"); } 

     } 

    }

    //清理结果集,防止内存泄露

     sqlite3_finalize(statement);

    单例模式:(这里主要用来保证初始化的数据库是唯一的,只要创建了一次,那么它就不会被再创建)

    + (NoteDAO*)sharedManager 

      static dispatch_once_t once; 

      dispatch_once(&once, ^{ 

      sharedManager = [[self alloc] init]; 

      [sharedManager   createEditableCopyOfDatabaseIfNeeded]; }

      );

       return sharedManager;

     }

     

  • 相关阅读:
    laravel的验证码
    laravel的中间件
    laravel的基本使用
    laravel的路由
    layui上传文件的choose只触发一次
    宝塔访问站点上一级目录
    orcale的几个查询
    tree的递归,适合与el-tree
    GIT 命令大全
    Oracle 时间戳与日期的转换
  • 原文地址:https://www.cnblogs.com/XYQ-208910/p/4824272.html
Copyright © 2020-2023  润新知