zoukankan      html  css  js  c++  java
  • SQLite3的使用

    一、什么是SQLIte

    SQLite是一款轻型的嵌入式数据库,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就足够了。它的处理速度比Mysql、PostgreSQL这两款著名的数据库都还快

    二、数据库存储数据的步骤

    1、新建一个数据库

    2、新建一张表(table)

    3、添加多个字段(column,列,属性)

    4、添加多行记录(row,每行存放多个字段对应的值)

    三、SQL语句种类

    1、数据定义语句(DDL:Data Definition Language) 包括create和drop等操作 在数据库中创建新表或删除表(create table或 drop table)

    2、数据操作语句(DML:Data Manipulation Language) 包括insert、update、delete等操作 上面的3种操作分别用于添加、修改、删除表中的数据

    3、数据查询语句(DQL:Data Query Language) 可以用于查询获得表中的数据 关键字select是DQL(也是所有SQL)用得最多的操作 其他DQL常用的关键字有where,order by,group by和having

    四、SQLite的字段类型

    1. integer : 整型值

    2. real : 浮点值

    3. text : 文本字符串

    4. blob : 二进制数据(比如文件)

    实际上SQLite是无类型的,但为了保持良好的编程规范,方便程序员之间的交流,编写建表语句的时候最好还是加上每个字段的具体类型

    五、SQLite的使用

    1、创建数据库

    在IOS中使用SQLite3时,首先需要添加库文件libsqlite3.dylib和导入主头文件

     1 // 拼接数据库地址
     2     NSString *path = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)lastObject];
     3     NSString *sqlFile = [path stringByAppendingPathComponent:@student.sqlite];
     4     // 打开数据
     5     int result = sqlite3_open(sqlFile.UTF8String, &_db);
     6 // 打开数据库会返回一个int类型的返回值,通过该值可以判断创建数据库是否成功
     7      // 判断是否打开成功
     8     if (result == SQLITE_OK) {
     9         NSLog(@打开成功);
    10         // 创建表
    11         /*
    12          第一个参数: 需要执行SQL语句的数据库对象
    13          第二个参数: 需要执行的SQL语句
    14          第三个参数: 回调函数
    15          第四个参数: 第三个参数的参数
    16          第五个参数: 接收错误信息
    17          */
    18                     // 创建表的sql语句
    19         NSString *sql = @CREATE TABLE IF NOT EXISTS t_student(id INTEGER PRIMARY KEY AUTOINCREMENT , name TEXT, age INTEGER, score REAL);;
    20         result = sqlite3_exec(_db, sql.UTF8String, NULL, NULL, NULL);
    21         if (result == SQLITE_OK) {
    22             NSLog(@创建表成功);
    23         }else
    24         {
    25             NSLog(@创建表失败);
    26         }
    27     }else
    28     {
    29         NSLog(@打开失败);
    30     }

     2、插入数据

    1 NSString *sql = @INSERT INTO t_student(age, score, name) VALUES ('28', 100, 'jonathan');
    2     int result =  sqlite3_exec(_db, sql.UTF8String, NULL, NULL, NULL);
    3     if (result == SQLITE_OK) {
    4         NSLog(@插入成功);
    5     }

    3、修改数据

    1 NSString *sql = @UPDATE t_student SET name = 'LNJ';;
    2     int result =  sqlite3_exec(_db, sql.UTF8String, NULL, NULL, NULL);
    3     if (result == SQLITE_OK) {
    4         NSLog(@修改成功);
    5     }

    4、删除数据

    1 NSString *sql = @DELETE FROM t_student WHERE id = 1; ;
    2     int result =  sqlite3_exec(_db, sql.UTF8String, NULL, NULL, NULL);
    3     if (result == SQLITE_OK) {
    4         NSLog(@删除成功);
    5     }

    5、查询数据

    sqlite3操作中, 所有DML语句都是使用sqlite3_exec函数执行SQL语句即可,但是如果是需要查询数据库, 不能使用sqlite3_exec, 因为它并没有返回查询到得结果发给我们

     1 NSString *sql = @SELECT * FROM t_student;;
     2     sqlite3_stmt *stemt = NULL;
     3     /*
     4      第一个参数:需要执行SQL语句的数据库
     5      第二个参数:需要执行的SQL语句
     6      第三个参数: 告诉系统SQL语句的长度, 如果传入一个小于0的数, 系统会自动计算
     7      第四个参数:结果集, 里面存放所有查询到的数据(不严谨)
     8      */
     9     sqlite3_prepare_v2(_db, sql.UTF8String, -1, &stemt, NULL);
    10     // 判断有没有查询结果
    11     while (sqlite3_step(stemt) == SQLITE_ROW) {
    12         // 取出第一个字段的查询得结果
    13         const unsigned char *name = sqlite3_column_text(stemt, 1);
    14         // 取出第一个字段的查询得结果
    15         int age = sqlite3_column_int(stemt, 2);
    16         // 取出第一个字段的查询得结果
    17         double score = sqlite3_column_double(stemt, 3);
    18         NSLog(@%s %d %f, name, age, score);
    19     }
  • 相关阅读:
    POJ3480 John 博弈论 anti-nim anti-SG
    POJ2068 Nim 博弈论 dp
    POJ 1740 A New Stone Game 又是博弈论配对找规律orz 博弈论 规律
    Python复习之下划线的含义
    django 模板语法和三种返回方式
    Python自动化之一对多
    Python自动化之django的ORM
    Python自动化之django的ORM操作——Python源码
    django orm字段和参数
    Python自动化之django视图
  • 原文地址:https://www.cnblogs.com/gzhu-lkun/p/5823923.html
Copyright © 2011-2022 走看看