ios超精细论证数据库管理基础
来源:互联网 发布:淘宝美工练手 编辑:程序博客网 时间:2024/04/30 04:36
如果你要使用数据库的话要引用一个框架
libsqlite3.0.dylib框架
使用的话需要引入头文件#import <sqlite3.h>
附件: SQlite常用语句
注:SQlite语句 不区分大小写
1.创建表语句
create table Student (Student 是表名)
IF NOT EXISTS 表不存在 才创建
gender text 表示其类型 字符串
存储类型:
NULL 值是空值
INTEGER 值是整型
REAL 值是浮点数
TEXT 值是文本字符串
BLOB 值是一个二进制类型
number integer primary key not NULL 主键值 如果不操作 自增
create table IF NOT EXISTS lanOuStudent(number integer primary key not NULL, name text not NULL, gender text not NULL, age integer not NULL)
2.插入语句
insert into lanOuStudent 表名
注:单引号 与 顺序对应
insert into lanOuStudent(name ,gender ,age , number) values('%@' ,'%@' , '%ld' , '%ld')
3.删除语句
delete from lanOuStudent 表名
where 根据条件删除
delete from lanOuStudent where age > '%ld'
4.更新语句
update lanOuStudent 表名
where 根据条件更新
set age 更新的字段
update lanOuStudent set age = '%ld' where name = '%@'
5.查询语句
where 根据条件查询 多条件用 and 连接
*表示 查询所有字段
select * from lanOuStudent where name = '%@' and age = '%ld'
select * from lanOuStudent 查询所有
重要函数参数:
sqlite3_exec(sqlite3 *, const char *sql, int (*callback)(void *, int, char **, char **), void *, char **errmsg)
第1个参数 是前面open函数得到的指针。
第2个参数 是一条sql语句。
第3个参数 是回调,当这条语句执行之后,sqlite3会去调用你提供的这个函数。
第4个参数 是你所提供的指针,你可以传递任何一个指针参数到这里,这个参数最终会传到回调函数里面,如果不需要传递指针给回调函数,可以填NULL。等下我们再看回调函数的写法,以及这个参数的使用。
第5个参数 是错误信息。
sqlite3_prepare_v2(sqlite3 *db, const char *zSql, int nByte, sqlite3_stmt **ppStmt, const char **pzTail)
int nByte -1 指sql语句长度 可以无限长
sqlite3_stmt 跟随指针 地址
const char **pzTail 截取sql语句未使用部分
绑定查询值
第二个参数 指查询的第几个问号 从1开始
sqlite3_bind_text(stmt, 1, name.UTF8String, -1, NULL);
读取数据
第二个参数 指的是 表中的列数 从0开始
char *name = (char *)sqlite3_column_text(stmt, 1);
1.声明初始化方法
+ (SQLiteManager*)shareManager;
实现
//创建单例类 对数据库进型操作的封装
+ (SQLiteManager *)shareManager
{
static SQLiteManager *manager = nil;
if (manager == nil) {
manager = [[SQLiteManageralloc]init];
}
return manager;
+ (SQLiteManager *)shareManager
{
static SQLiteManager *manager = nil;
if (manager == nil) {
manager = [[SQLiteManageralloc]init];
}
return manager;
}
2.创建或打开数据库 关闭
//打开数据库
// sqlite3 * 表示咱们的数据库
- (sqlite3 *)openDB;
// 关闭数据库
// sqlite3 * 表示咱们的数据库
- (sqlite3 *)openDB;
// 关闭数据库
- (void)closeDB;
实现
//定义一个静态指针 负责连接数据库
// 保证程序从开始直到结束 才被释放
static sqlite3 *db = nil;
// 打开数据库
// sqlite3 * 表示咱们的数据库
- (sqlite3 *)openDB
{
// 判断
// 如果数据库不为空 就说明数据库存在直接返回就行
if (db != nil) {
return db;
}
// 不存在 就创建一个数据库
// 获取文件路径
NSString *documentPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES)lastObject];
// 数据库的名称 Student.sqlite
NSString *dbPath = [documentPath stringByAppendingPathComponent:@"Student.sqlite"];
NSLog(@"%@", dbPath);
// 创建数据库
// 参数1 文件的路径 需要把OC的字符串转换一下类型dbPath.UTF8String
// 参数2 数据库的地址
// sqlite3_open 该函数如果有数据库就打开 没有就创建出来
int result = sqlite3_open(dbPath.UTF8String, &db);
// 查看命令 返回结果
// SQLITE_OK 表示成功
if (result == SQLITE_OK) {
NSLog(@"创建成功
// 保证程序从开始直到结束 才被释放
static sqlite3 *db = nil;
// 打开数据库
// sqlite3 * 表示咱们的数据库
- (sqlite3 *)openDB
{
// 判断
// 如果数据库不为空 就说明数据库存在直接返回就行
if (db != nil) {
return db;
}
// 不存在 就创建一个数据库
// 获取文件路径
NSString *documentPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES)lastObject];
// 数据库的名称 Student.sqlite
NSString *dbPath = [documentPath stringByAppendingPathComponent:@"Student.sqlite"];
NSLog(@"%@", dbPath);
// 创建数据库
// 参数1 文件的路径 需要把OC的字符串转换一下类型dbPath.UTF8String
// 参数2 数据库的地址
// sqlite3_open 该函数如果有数据库就打开 没有就创建出来
int result = sqlite3_open(dbPath.UTF8String, &db);
// 查看命令 返回结果
// SQLITE_OK 表示成功
if (result == SQLITE_OK) {
NSLog(@"创建成功
0 0
- ios超精细论证数据库管理基础
- iOS超精细详解之GCD
- ios超精细详解之NSRunLoop
- 基础水平论证
- 精细化管理
- 协同运营,精细管理
- 【分享】北京市超精细格网化人口数据
- 安全生产精细化管理规划
- 关于iOS基础总结(2)--数据库、存储、内存管理
- iOS内存管理基础
- ios基础---内存管理
- oracle 数据库管理基础
- 数据库管理基础
- 数据库的基础管理
- iOS- CoreData 数据库管理
- BI与预算管理精细化
- 《生产精细化管理与现场改善》
- 如何精细化管理代码质量
- eclipse错误: 找不到或无法加载主类 main.Main
- 自定义View
- java 编程思想 阅读笔记(1)
- C++Primer第五版 10.4.1节练习
- git在实际开发中的运用-基本操作
- ios超精细论证数据库管理基础
- 安全感与真实自我的关系
- docker私有仓库连接的问题
- JavaScript:propetry 与 attribute 的区别
- 小菜鸟-我的第一篇博客
- 游戏2048
- 转载 PHP开发工具ZendStudio_6.1乱码解决终极方法
- 在IE、fixfox、chrome等浏览器中ajax提交成功后,打开新标签页面被浏览器拦截问题
- 使用dir()、readdir()和glob()遍历目录及测试性能 http://blog.csdn.net/hpy1165331898/article/details/44918879
原创粉丝点击
热门IT博客
热门问题
老师的惩罚
人脸识别
我在镇武司摸鱼那些年
重生之率土为王
我在大康的咸鱼生活
盘龙之生命进化
天生仙种
凡人之先天五行
春回大明朝
姑娘不必设防,我是瞎子
净水机哪个牌子好
美国怡口净水器怎么样
汉斯希尔
净水器哪家好
欧惠浦净水器
饮水机什么牌子好
霍尼韦尔净水器
康贝尔净水器
泉来净水器
校园直饮水机
新飞净水机
劳伦斯净水器
晶达净水机
春兰净水器
速腾净水器
什么牌子的净水器好
宝莱特净水器
自制净水器
汉斯顿净水器怎么样
直饮净水机
ao史密斯净水器
欧普特净水器
汉斯希尔净水器
奔泰净水器
夏新净水机
哪种净水器好
扬子净水器
家用饮水机
什么牌子的饮水机好
斯隆净水机
完美净水器怎么样
厨房净水器哪个牌子好
扬子净水机
司迈特饮水机
斯隆净水器
什么饮水机好
净水泉净水器
怡立净水器
家用饮水机什么牌子好
高加索净水器
冷热饮水机