26.SQLite

    1.  SQLitejiu's就是用来做数据存储
    2. iOS开发的作用就是用来做离线缓存当没有网络还能加载看过的内容iOS 里面做离线缓存最好的就是 SQLite
    3. 沙盒里弊端 不能操作大量的数据   不方便查询
    4. 沙盒的路径
    • Document:存放比较重要的数据并且在 itunes中自动备份
    • library

    cache 存储空间不足就会删除

    preference偏好设置

    • tmp随时可能被删掉

     

    1. 数据库的本质是一个文件

    Unix系统里面存放的东西也是文件

     

    1. 创建数据库文件 创建表 确定表头(字段名添加每一行信息  (记录)

    行相当于一个对象

     

    1. MySQL :中小型数据库最多存放百万条数据库免费的

    Oracle :亿级,兆级

    SQLServer百万级到千万级

     

     

    1. SQLite数据库后缀名一般以. sqlite或者. db
    2. 用工具创建数据库
    • 创建数据库
    • 双击就是打开数据库 右键就可以关闭

    blob浮点integer整形real浮点型text字符串

    • 表名规范t_表的名称命名v_视图的名称时候段应用的

     

    1. SQL语句

    DDL:数据定义语句

    创建表删除表

    DML:数据操作语句

    新增修改删除

    DQL :查询语句

    条件语句

     

    1. 前台和后台的 sql语句的百分之90是相似的
    2. createtableifnotexistst_name(名字,类型);

    删除 droptablet_productInfo;

    新增数据插入   insertinto t_productInfo(productId, productName, productPrice) values (--, -- , --);

    更改表内容  updatet_productInfo set  productPrice = 1.5whereproductName = '茶叶蛋';(修改特定某一条要加上条件)

    删除表数据 deletefromt_productInfowhereproductPrice > 3;

    查询 select *from t_productInfo;  (*代表查询出所有的列名代表通配符)

    select productName ,productPrice  from t_productInfo;

    select productId ,productName from productPrice > 50;

    select *from t_productInfo where productPrice < 100 and productId < 10010;(多个条件用 and 分割)

    统计有多少条记录 selectcount (*)fromt_productInfo 查询出来的列叫做 count(*) 

     selectcount (*) zongshu fromt_productInfo  这样查询出来的列名就叫做 zongshu 别名不能用 count因为他是关键字     列名和表明都可以起别名

    select pi.productName name from t_productInfopi;

     

     

     

    1. 高级查询  重要

    模糊查询 

    ios中比如在淘宝中输入 iphone

     

    select *fromt_productInfowhere productNamelike '%%'; (%标示通配符如果虾所有以虾开头的  % 所有以下结尾的   %%所有包含虾的)

     

    分页查询

    ios 中比如上拉下拉刷新

    select *from t_productInfolimit 0,5; (第一个数组标示从索引第几个开始查询,第二个标示一次查询多少条)

     

    1. 排序

    select *fromt_productInfoorderbyproductPrice; (关键字orderby默认从低到高)

    select *fromt_productInfoorderbyproductPricedesc;(降序)

     

    1. 综合查询

    select *fromt_productInfowhere productPrice < 100 order byproductPricedesc  limit 0,2;

     

    1. 主键

    用来添加唯一标识符 在开发中没有主键也是可以的  但是为了规范一般最好加上主键 一般主键自动增长不用我们管

     

    create tableif noteists t_person (idinteger  primarykey, nametext, ageinteger);

     

    1. 外键

    外键一般关联到另外一张表的主键 建立关系

    CREATE TABLE "t_primikaka" (

     "name" text NOT NULL,

     "age" integer,

     "id" integer,

    PRIMARY KEY("name"),

    CONSTRAINT "fk_lala" FOREIGN KEY ("id") REFERENCES "worker" ("id")

    )



    1. 要导入类库, libsqlite3.0 导入这个   编译一下
    2. SQLite 原生是 c 语言的  创建东西用函数
    3. 导入头文件并且所有函数  都已 sqlite3开头

     

    C语言中的全局成员变量在@ interface 直接{}

    除了字符串 其他的 oc 类型都可以用桥接  字符串直接. UTF8String 就可以了

    每个类在整个应用程序执行期间,只会调用一次, 所以把置顶一次的放入里边

    + (void)initialize{};

    . m 文件里边如果定义全局变量在前面加了 static 就是防止外部访问更加安全

     

    1. int result = sqlite3_open(创建出来的数据库保存到沙盒里的哪个路径下 + 文件名, 数据库的实例);
    2. 判断是否创建成功

    if(result == SQLITE_OK){

     

    创建表 , 增删改 都用一个函数 sqlite3_exec

     

    数据库实例/ 创建表的 SQL 语句/回调 如果你完成之后不需要可以传 NULL / 回调的参数参数3没写的话传 NULL / 错误信息

     sqlite3_exec (_db, , , , )

     

    查询 sqlite3_prepare_v2 这个函数

     

    }

     

    1. query

    参数1: 数据库实例  参数2查询 sql 语句  参数3 查询 sql 语句的长度一般穿入-1让系统算

    参数4 查询出来的集合在查询语句中查询出来的集合叫做结果集

    参数5尾巴一般出入 null

    int result   =   sqlite3_prepare_v2(_db, querySQL.UTF8String, -1, &stmt, NULL);

    if(result == SQLITE_OK){不管 查询多少条

    while(sqlite3_step(stmt) == SQLITE_ROW);

    const unsigned charcname = sqlite3_column_text(stmt,1);

     

    int age = sqlite3_column_int(stmt, 2);

    }

     

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值