26.SQLite

来源:互联网 发布:linux查看端口号命令 编辑:程序博客网 时间:2024/04/30 00:50
    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  fromt_productInfo;

    select productId ,productName fromproductPrice > 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 fromt_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_productInfowhereproductPrice < 100 orderbyproductPricedesc limit 0,2;

     

    1. 主键

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

     

    create tableifnoteistst_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);

    constunsigned charcname = sqlite3_column_text(stmt,1);

     

    int age = sqlite3_column_int(stmt, 2);

    }

     

0 0
原创粉丝点击