数据库(SQLite)

来源:互联网 发布:网页源代码加密js 编辑:程序博客网 时间:2024/06/03 13:17


    // 数据库中组织(存储)数据是按照一定的数据格式(/B)来存储的!树形结构的数据可以很方便/快捷的查询到数据!

    

    // iOS(移动端)数据库和服务器端数据库有没有关系!

    

    // 如果 app 本地需要缓存大量的数据,那么就在本地(磁盘/沙盒)中使用数据库来缓存数据!

    

    // 移动端数据库 比较轻量级!

    

    // SQLite :是使用在移动端(iOS/安卓/WP/黑莓)的数据库

    

    //应用场景: 购物车(离线查看!)


数据库工作过程

{

    1.数据如何存入数据库!

    {

        1.创建一张表.(根据存储的数据特点,创建对应的表!)

        

        2.将数据存储在""

    }

    

    

    2.数据库使用

    {

        1. database(DB) File:数据库文件路径! 数据库中的所有数据都保存在这个文件中!

        

        数据库(SQL)语句是不区分大小写的!如果是系统的关键字大写!自己的就用小写!

        

        2. "表名"规范: t_/T_ 开头,后面跟表名!

        

        3.插入数据!

     }

    

    

    DDL语句 : "建表" "删表"

    {

        "建表" :CREATE TABLE IF NOT EXISTS t_class (id integer, numbers text);

        //如果表不存在,才会创建!表存在,不报错!

        

        "删表" :"DROP TABLE IF EXISTS t_class;"

        //如果表存在,才会删除!表不存在,不会报错!

        

       注意:

        

        "主键" :主键用来标记数据库表中唯一的一条数据!一般在定义主键的时候,主键值由系统自动生成!

       主键的类型 integter 类型,自动增长!

        

        "建表"的最终语句:

        

        "CREATE TABLE IF NOT EXISTS t_student (id integer PRIMARY KEY AUTOINCREMENT , name text , score integer ,age integer);"

        

        PRIMARY KEY :指定主键.默认主键约束不能为空.

        

        AUTOINCREMENT :自动增长.

        

    }

    

   数据库操作: CRUD 操作! "增删改查"! ---- 操作的都是""

    

    DML语句 : "" "" ""

    {

        "":往表中插入数据:

        

        "INSERT INTO t_student (name,score,age) VALUES ('jsak',80,21);"

        //打印: 会影响一行数据!

        

        "":从表中删除数据:

        

        DELETE FROM t_student;

        //默认会删除表中的所有数据, 不会删除表;

        

        //条件删除:

        "DELETE FROM t_student WHERE score > 90;"

        

        DELETE FROM t_student WHERE name = 'jsak';

        

        "" :更新数据!

        

        "UPDATE t_student SET age = 18 WHERE age < 18;"

        

        //将年龄小于 18 岁的 age 统统改为 18;

        

    }

    

    DQL 语句 :"查询"语句 :查询到的结果会以表的形式返回/会查询到一个结果集.

    {

    

        SELECT * FROM t_student;

        //从表t_student 中取出所有数据!

        

        SELECT name,score FROM t_student;

        //从表t_student 中取出字段为 name score 的所有数据!

        

        SELECT name,score FROM t_student LIMIT 5 ,5;

        // LIMIT 5 ,5 :取出数据的限制条件,隔过前5条数据,取后面的5!

        // LIMIT :限制单次取出数据的数据量!

        

        SELECT name,score FROM t_student WHERE score > 81 LIMIT 2;

        //附带条件语句的查询语句!

        

        "SELECT name,score FROM t_student WHERE score > 81 ORDER BY score DESC LIMIT 10;"

        //将分数 > 81 的数据取出来,并且降序排序!单次查询做多取出 10 条数据!

    }

}

在OC代码中的集成

NSString *filePath = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES).lastObject;

    

    //拼接数据库路径

    filePath = [filePath stringByAppendingString:@"/student.sqlite"];

    

    //打开数据库!

    

    // 1.创建数据库实例.

    FMDatabase *db = [FMDatabase databaseWithPath:filePath];


// 2.打开数据库

    BOOL is_yes = [db open];

    

    if (is_yes) {

        NSLog(@"数据库打开成功!");

        

        //查询数据!

        

        // 1.查询数据的 sql语句.

        NSString *sql = @"SELECT * FROM t_student WHERE score > 60 ORDER BY score DESC LIMIT 10;";

        

        // 2.查询数据

        FMResultSet *result = [db executeQuery:sql];

        

        //遍历结果!

        while ([result next]) { //能够查询到一条数据!

            

            //利用 FMDB 来查询数据的时候,可以通过"字段名"或者字段所在的"列数"来获取内容!

            //展示数据.

            int myID = [result intForColumn:@"id"];

            

            NSString *myName = [result stringForColumn:@"name"];

            

            int myScore = [result intForColumn:@"score"];

            

            int myAge = [result intForColumnIndex:3];

            

            NSLog(@"myID:%zd myName:%@ myScore:%zd myAge:%zd \n",myID,myName,myScore,myAge);

            

        }

    }


// 1.建表的 sql语句!

    NSString *sql = @"CREATE TABLE IF NOT EXISTS t_student (id integer PRIMARY KEY AUTOINCREMENT , name text , score integer ,age integer);";

    //查询语句

    NSString *sql = @"SELECT * FROM t_student WHERE score > 60 ORDER BY score DESC LIMIT 10;";

    // 1. sql语句

//   删除语句

    NSString *sql = @"DELETE FROM t_student;";

//   插入语句

    NSString *sql = [NSString stringWithFormat:@"INSERT INTO t_student (name,score,age) VALUES ('%@',%zd,%zd);",name,score,age];







0 0
原创粉丝点击