iOS进阶(数据库之SQLite)

1.SQLite语句

在已有的数据库中创建表
 create table 表名称(ID integer primary key, name text not null, sex text default “男”)

 往表中插入数据
 insert into 表名称 (name, sex) values(“源源”, “男”) 字段可以无顺序,但是值一定要保证对应,并且此时 完全可以不设置sex字段的值,因为我们在创建表时 已经把性别设置为default了。
 insert into 表名称 values(11, “巴达”, “妖”) 必须保证设置的值与表中字段顺序一样

 修改表中某一条记录的信息
 update 表名称 set name = “hehe”, sex = “女” where ID = 1

 查询语句
 select ID,name,sex from 表名称 查询的结果与你查询的字段顺序是一样的。
 select * from 表名称 查询表中所有的字段信息,查询的结果与你表中字段顺序一样
 select * from 表名称 where ID = 1 后面可以跟条件查询具体想要的信息
 select * from 表名称 where ID > 1 and sex = “女” 可以跟多个条件,并且多个条件之间用and连接,此时查出来的是同up所有记录。如果多个条件之间用or连接,那么查出来的结果只需要满足其中一条就可以。
 select * from 表名称 where name like “%源%” 只要名字中包含源,都可以查询出来

 删除记录
 delete from 表名称 where name = “源源”

2.操作数据库步骤

创建一个类来操作数据库(注意要先导入libsqlite3.dylib)

static sqlite3 *db = nil;

//打开数据库
+ (sqlite3 *)open{
    //此方法的主要作用是打开数据库,准确的说是连接数据库
    //方绘制是一个数据库指针
    //因为 这个数据库指针在很多的SQLite API(函数)中都会用到,我们声明一个类的方法来获取,更加方便

    if (db != nil) {
        return db;
    }

    //获取documents文件
    NSString *docPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
    //生成数据库文件在沙盒中的位置
    NSString *sqlPath = [docPath stringByAppendingPathComponent:@"studb.sqlite"];
    //获取文件管理对象
    NSFileManager *fileManager = [NSFileManager defaultManager];
    //判断沙盒路径中是否存在数据库文件,如果不存咋才执行拷贝操作,如果存在不在执行拷贝操作
    if ([fileManager fileExistsAtPath:sqlPath] == NO) {
        //获取数据库文件在包中的文件
        NSString *filePath = [[NSBundle mainBundle] pathForResource:@"studb" ofType:@"sqlite"];
        //使用文件管理对象完成管理对象
        [fileManager copyItemAtPath:filePath toPath:sqlPath error:nil];

    }

//    //创建一个数据库指针
//    sqlite3 *db = nil;

    //打开数据库需要使用以下函数
    //第一个参数是数据库路径
    //第二个参数 是指向数据库指针的指针
    sqlite3_open([sqlPath UTF8String], &db);

    return db;
}

//关闭数据库
+ (void)close{
    //关闭数据库
    sqlite3_close(db);

    //置空数据库指针
    db = nil;

}

//打开数据库--创建语句对象(保存了关联的数据库,执行的sql语句,sql语句的长度等信息)--逐行获取数据,并将读出来的C语言转化为OC语言--将数据保存入模型存放在数组中--最后不要忘记释放语句对象

//查找学生
+ (Student *)findStudentByID:(int)ID{
    //打开数据库
    sqlite3 *db = [DB open];

    sqlite3_stmt *stmt = nil;
    Student *student = nil;

    int result = sqlite3_prepare_v2(db, "select * from Students where ID = ?", -1, &stmt, nil);

    if (result == SQLITE_OK) {
        //如果查询语句或者 其他sql语句 有条件,在准备语句对象的函数内部,sql中用?来代替条件,那么在语句执行之前一定要绑定
        sqlite3_bind_int(stmt, 1, ID);//第二个参数表示第几个问号,问号的下标从1 开始
        if (sqlite3_step(stmt) == SQLITE_ROW) {
            //获取记录中的字段信息
            const unsigned char *cName = sqlite3_column_text(stmt, 1);
            const unsigned char *cGender = sqlite3_column_text(stmt, 2);

            //将C语言字符串转换成OC字符串
            NSString *name = [NSString stringWithUTF8String:(const char *)cName];
            NSString *gender = [NSString stringWithUTF8String:(const char *)cGender];
            student = [Student studentWithID:ID name:name gender:gender];
        }
    }
    //先释放语句对象
    sqlite3_finalize(stmt);
    return student;
}
时间: 2024-12-17 22:50:04

iOS进阶(数据库之SQLite)的相关文章

iOS开发数据库篇—SQLite的应用

iOS开发数据库篇—SQLite的应用 一.简单说明 在iOS中使用SQLite3,首先要添加库文件libsqlite3.dylib和导入主头文件. 导入头文件,可以使用库中的函数(是纯C语言的) 二.具体说明 新建一个项目,在项目的主界面中放四个按钮(分别是,增加.删除.修改.查询). 1.sqlite3_open(<#const char *filename#>, <#sqlite3 **ppDb#>)函数的一些说明: (1)作用:把一个文件名称传递给他,它会自动检测这个文件是

iOS开发数据库篇—SQLite常用的函数

iOS开发数据库篇—SQLite常用的函数 一.简单说明 1.打开数据库 int sqlite3_open( const char *filename,   // 数据库的文件路径 sqlite3 **ppDb          // 数据库实例 ); 2.执行任何SQL语句 int sqlite3_exec( sqlite3*,                                  // 一个打开的数据库实例 const char *sql,                    

IOS开发数据库篇—SQLite模糊查询

IOS开发数据库篇—SQLite模糊查询 一.示例 说明:本文简单示例了SQLite的模糊查询 1.新建一个继承自NSObject的模型 该类中的代码: 1 // 2 // YYPerson.h 3 // 03-模糊查询 4 // 5 // Created by apple on 14-7-27. 6 // Copyright (c) 2014年 wendingding. All rights reserved. 7 // 8 9 #import <Foundation/Foundation.h

【转】 iOS开发数据库篇—SQLite简单介绍

开始学SQLite啦, 原文: http://www.cnblogs.com/wendingding/p/3868893.html iOS开发数据库篇—SQLite简单介绍 一.离线缓存 在项目开发中,通常都需要对数据进行离线缓存的处理,如新闻数据的离线缓存等. 说明:离线缓存一般都是把数据保存到项目的沙盒中.有以下几种方式 (1)归档:NSCodeing.NSKeyedArchiver (2)偏好设置:NSUserDefaults (3)Plist存储:writeToFile 提示:上述三种方

iOS开发数据库篇—SQLite简单介绍

转自:http://www.cnblogs.com/wendingding/p/3868893.html 一.离线缓存 在项目开发中,通常都需要对数据进行离线缓存的处理,如新闻数据的离线缓存等. 说明:离线缓存一般都是把数据保存到项目的沙盒中.有以下几种方式 (1)归档:NSCodeing.NSKeyedArchiver (2)偏好设置:NSUserDefaults (3)Plist存储:writeToFile 提示:上述三种方法都有一个致命的缺点,那就是都无法存储大批量的数据,有性能的问题.

IOS开发数据库篇-- SQLite清空表并将自增列归零

通常在清空表的时候,还需要把自增列归零.在SQLite中定义自增列的方法如下: 1 CREATE TABLE TableName ( id INTEGER PRIMARY KEY AUTOINCREMENT, ... ); 当SQLite数据库中包含自增列时,会自动建立一个名为 sqlite_sequence 的表.这个表包含两个列:name和seq.name记录自增列所在的表,seq记录当前序号(下一条记录的编号就是当前序号加1).如果想把某个自增列的序号归零,只需要修改 sqlite_seq

IOS开发数据库篇--- &quot;sqlite常用语句&quot;

/*简单约束*/ CREATE TABLE IF NOT EXISTS t_student(id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, age INTEGER); CREATE TABLE IF NOT EXISTS t_student(id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, age INTEGER NOT NULL); CREATE TABLE IF NOT EXI

iOS进阶学习-数据库

一.数据库管理系统 1.SQL语言概述:SQL是Structured Query Language(结构化查询语言)的缩写.SQL是专为数据库而建立的操作命令集,是一种功能齐全的数据库语言. 2.常见的数据库: MySQL:MySQL是一个精巧的SQL数据库管理系统,而且是开源的数据管理系统.MySQL主要目标是快速.健壮和易用.它拥有强大的功能.灵活性.丰富的应用编程接口(API)以及精巧的系统结构. Oracle:Oracle Database,又名Oracle RDBMS,或简称Oracl

UI进阶 数据库 SQLite

1.数据库管理系统 SQL:SQL是Structured Query Language(结构化查询语言)的缩写. SQL是专为数据库而建立的操作命令集,是一种功能齐全的数据库语言. 常见的数据库管理系统 MySQL:MySQL是一个精巧的SQL数据库管理系统,而且是开源的数据管理系统.MySQL 主要目标是快速.健壮和易用.由于它的强大功能.灵活性.丰富的应用编程接口(API)以及精巧的系统结构,受到了广大自由软件爱好者甚至是商业软件用户的青睐. Oracle:Oracle Database,又