李洪强iOS开发之-sql数据库的使用
一,创建工程

二: 导入头文件

三:导入

四: 数据库增删改查
//因为是结构体类型,所以用assign
//1.创建数据库(保存路径)
@property(nonatomic,assign)sqlite3 *db;
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
//结构体类型的指针
// sqlite3 *db = NULL;
//打开数据库,如果没有就创建
NSString *path = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)lastObject] stringByAppendingPathComponent:@"dasta.sqlite"];
NSLog(@"%@",path);
int success = sqlite3_open(path.UTF8String, &_db);
if(success == SQLITE_OK){
NSLog(@"创建数据库成功!");
//2.创建表(指定字段,需求,保存学生信息 id name score)
//用sql语句
NSString *str = @"CREATE TABLE IF NOT EXISTS t_student (id INTEGER PRIMARY KEY AUTOINCREMENT ,name TEXT NOT NULL,score REAL NOT NULL)";
//执行
int success_t = sqlite3_exec(_db, str.UTF8String, NULL, NULL, NULL);
if(success_t == SQLITE_OK){
NSLog(@"创建表成功!");
}else{
NSLog(@"创建表失败!");
}
}else{
NSLog(@"创建数据库失败!");
}
//关闭数据库,至于在什么时候关闭,取决于自己的需求
sqlite3_close(_db);
}
//3.增加 (100条数据 数据随机)
- (IBAction)insertData:(UIButton *)sender {
for(int i = 0; i < 100 ; i++){
NSString *strName = [NSString stringWithFormat:@"ming-yuexing-%d",i];
NSString *sqlStr = [NSString stringWithFormat:@"INSERT INTO t_student (name , score) VALUES ('%@',%.2f)",strName,arc4random_uniform(1000)/10.0];
//执行
int success = sqlite3_exec(_db, sqlStr.UTF8String, NULL, NULL, NULL);
if(success == SQLITE_OK){
NSLog(@"添加成功");
}else{
NSLog(@"添加失败");
}
}
}
//4.删除 (70-80分数)
- (IBAction)deleteData:(UIButton *)sender {
NSString *sqlStr = @"DELETE FROM t_student WHERE score > 70.0 AND score < 80.0";
//执行
int success = sqlite3_exec(_db, sqlStr.UTF8String, NULL, NULL, NULL);
if(success == SQLITE_OK){
NSLog(@"删除成功");
}else{
NSLog(@"删除失败");
}
}
//5.修改 (修改小于60.0的 为60.0)
- (IBAction)updateData:(UIButton *)sender {
NSString *sqlStr = @"UPDATE t_student SET score = 60.0 WHERE score < 60.0";
//执行
int success = sqlite3_exec(_db, sqlStr.UTF8String, NULL, NULL, NULL);
if(success == SQLITE_OK){
NSLog(@"修改成功");
}else{
NSLog(@"修改失败");
}
}
//6.查询
- (IBAction)selectData:(UIButton *)sender {
// (查成绩 >= 60)
// NSString *sqlStr = @"SELECT * FROM t_student WHERE score > 60.0 ORDER BY score DESC";
//查询数据 (name中带 8 的)
//8% 意思是以8开头
//%8 意思是以8结尾
NSString *sqlStr = @"SELECT * FROM t_student WHERE name LIKE '%8'";
//查询之后,把结果放在stmt对象
//保存所有的结果集
sqlite3_stmt *stmt = nil;
sqlite3_prepare(_db, sqlStr.UTF8String, -1, &stmt, NULL);
//获取到所有的结果 每一步 查询到一条记录
sqlite3_step(stmt);
while (sqlite3_step(stmt) == SQLITE_ROW) {
//取出一条记录
//name TEXT score REAL
//从第几列告诉我
const unsigned char * name = sqlite3_column_text(stmt, 1);
NSString *strName = [NSString stringWithCString:(const char *)name encoding:NSUTF8StringEncoding];
//score
double score = sqlite3_column_double(stmt, 2);
NSLog(@"name = %@ score = %f",strName,score);
}
}
@end
李洪强iOS开发之-sql数据库的使用的更多相关文章
- 李洪强iOS开发之-环信04_消息
李洪强iOS开发之-环信04_消息 消息:IM 交互实体,在 SDK 中对应的类型是 EMMessage.EMMessage 由 EMMessageBody 组成. 构造消息 构造文字消息 EMT ...
- 李洪强iOS开发之-环信02.1_环信 SDK 2.x到3.0升级文档
李洪强iOS开发之-环信02.1_环信 SDK 2.x到3.0升级文档 SDK 2.x 至 3.0 升级指南 环信 SDK 3.0 升级文档 3.0 中的核心类为 EMClient 类,通过 EMCl ...
- 李洪强iOS开发之-入门指南
李洪强iOS开发之-入门指南 1零基础小白如何进行iOS系统学习 首先,学习目标要明确:其次,有了目标,要培养兴趣,经常给自己一些正面的反馈,比如对自己的进步进行鼓励,在前期小步快走:再次,学技术最重 ...
- 李洪强iOS开发之添加手势
李洪强iOS开发之添加手势 02 - 添加手势
- 李洪强iOS开发之- 实现简单的弹窗
李洪强iOS开发之- 实现简单的弹窗 实现的效果: 112222222222223333333333333333
- 李洪强iOS开发之后使用XIB实现横向滚动的UIScrollView
李洪强iOS开发之后使用XIB实现横向滚动的UIScrollView 11111222
- 李洪强iOS开发之苹果使用预览截图
李洪强iOS开发之苹果使用预览截图 01 在预览的图片中选中你要截得区域 02 - command + C 03 - Command + N 04 - Command + S (保存)
- 李洪强iOS开发之通知的使用
李洪强iOS开发之通知的使用 01 - 在A中发送通知 02 - 在B中监听通知 03 - 在B中通知出发的方法 04 - 在B控制器viewDidLoad调用通知
- 李洪强iOS开发之后使用纯代码实现横向滚动的UIScrollView
李洪强iOS开发之后使用纯代码实现横向滚动的UIScrollView (VTmagic是一个实现左右滚动的控制器的框架,也可以实现此功能) 实现的效果: 01 - 创建四个控制器 02 - 定义需要 ...
随机推荐
- AFN同步异步请求
异步请求: -(BOOL)getOnlyKey1 { NSString *myUUIDStr = [[[UIDevice currentDevice] identifierForVendor] UUI ...
- 使用Python创建MySQL数据库实现字段动态添加以及动态的插入数据
应用场景: 我们须要设计一个数据库来保存多个文档中每一个文档的keyword. 假如我们每一个文档字符都超过了1000,取当中出现频率最大的为我们的keyword. 如果每个文档的keyword都超过 ...
- oracle date日期类型 精析
一.date 1.date.sysdate格式说明 展示 date类型,展示格式既可以为:YYYY/MM/DD,也可以为YYYY/MM/DD HH24:MI:SS: 其存储格式只有一种:YYYY/ ...
- 好用的eclipse properties插件
eclipse默认编辑器: 在有汉字的情况,特别是注释是汉字的情况,你会非常蛋疼的 JP的properties插件:http://propedit.sourceforge.jp/eclipse/upd ...
- Log4Net的概念和使用
第一篇文本日志 log4net简介: log4net简介: log4net是一个功能著名的开源日志记录组件,由java平台而来. 利用log4net可以方便地将日志信息记录到文件.控制台.Window ...
- wubi.exe的工作原理
wubi.exe的工作原理 Wubi没有修改系统分区,在一个Windows分区中安装了一个完整的Ubuntu系统.初看起来,这简直是不可能完成的任务.但是Wubi的确做到了.而我们要关心的是Wubi是 ...
- 将数据库dbcp连接池改为c3p0连接池(草稿,别点)
D:\Develop\apache-tomcat-7.0.52\bin\catalina.bat run[2017-12-26 02:31:29,174] Artifact pers:war expl ...
- Google Chrome调试js代码,开发者工具之调试工具常用功能
参考:Google Chrome调试js代码-http://www.open-open.com/lib/view/open1384785324165.html 重点:左下角一个{}括号图标按钮用于把杂 ...
- 浅谈 .NET 中的对象引用、非托管指针和托管指针
目录 前言 一.对象引用 二.值传递和引用传递 三.初识托管指针和非托管指针 四.非托管指针 1.非托管指针不能指向对象引用 2.类成员指针 五.托管指针 前言 本文主要是以 C# 为例介绍 .NET ...
- mvc中Action前HttpPost的作用
本文导读:在ASP.NET MVC框架中,为了限制某个action只接受HttpPost的请求,对于HttpGet的请求则提示404找不到页面,可以在action的方法前面加上[HttpPost]属性 ...