iOS:SQL
iOS虽然也有SQL,不过用得少(至少我目前是这样)。大数据直接丢给后台,小的用Plist足矣。
再退一步,有FMDB,原生的也用得少了。
下面是之前学SQL时候的笔记。
1、创建
1-1)、打开: 数据库指针、保存地址
sqlite3_open([path UTF8String], &new_sql)
1-2)、创建: 数据库指针、创建指令、错误指令
NSString *command = @"CREATE TABLE IF NOT EXISTS UserTable (username TEXT primary key,password TEXT,age TEXT)"; sqlite3_exec(new_sql, [command UTF8String], NULL, NULL, &new_error)
1-3)、关闭: 数据库指针
sqlite3_close(new_sql);
2、插入
2-1)、打开: 数据库指针、保存地址
同上
2-2)、插入:
//插入:指令
NSString *op = @"INSERT INTO UserTable(username,password,age) VALUES (?,?,?)"; //准备: 数据库指针、插入指令、句柄
sqlite3_prepare(new_sql, [op UTF8String], -1, &new_stmt, NULL); //绑定: 句柄、位置、数据
sqlite3_bind_text(new_stmt, 1, [name UTF8String], -1, NULL); //下一步: 句柄
sqlite3_step(new_stmt); //结束: 句柄
sqlite3_finalize(new_stmt);
2-3)、关闭: 数据库指针
同上
3、删除
3-1)、打开: 数据库指针、保存地址
同上
3-2)、删除:
//删除指令:
NSString *op = @"DELETE FROM userTable WHERE userName = ?"; //准备: 数据库指针、删除指令、句柄
sqlite3_prepare(new_sql, [op UTF8String], -1, &new_stmt, NULL); //绑定: 句柄、位置、数据
sqlite3_bind_text(new_stmt, 1, [name UTF8String], -1, NULL); //下一步: 句柄
sqlite3_step(new_stmt); //结束: 句柄
sqlite3_finalize(new_stmt);
3-3)、关闭: 数据库指针
同上
4、选择
4-1)、打开: 数据库指针、保存地址
同上
4-2)、选择:
//选择指令:
1)NSString *op = @"SELECT username,password,age From UserTable where username = ?";
2)NSString *op = @"SELECT username,password,age From UserTable"; //准备: 数据库指针、选择指令、句柄
sqlite3_prepare(new_sql, [op UTF8String], -1, &new_stmt, NULL); //绑定: 句柄、位置、数据
sqlite3_bind_text(new_stmt, 1, [selet_name UTF8String], -1, NULL); //下一步: 句柄
sqlite3_step(new_stmt); //遍历:
while (result == SQLITE_ROW)
{
char *c_name = (char *)sqlite3_column_text(new_stmt, 0);
char *c_password = (char *)sqlite3_column_text(new_stmt, 1);
char *c_age = (char *)sqlite3_column_text(new_stmt, 2); NSString *s_name = [NSString stringWithCString:c_name encoding:NSUTF8StringEncoding];
NSString *s_password = [NSString stringWithCString:c_password encoding:NSUTF8StringEncoding];
NSString *s_age = [NSString stringWithCString:c_age encoding:NSUTF8StringEncoding]; NSLog(@"%@,%@,%@",s_name,s_password,s_age);
result = sqlite3_step(new_stmt);
//NSLog(@"%d",new_stmt);
} //结束: 句柄
sqlite3_finalize(new_stmt);
4-3)、关闭: 数据库指针
同上
附录:
5、插入变体:更新
@"UPDATE UserTable SET password = ? where username = ?"
6、选择变体:排序
@"SELECT * FROM userTable ORDER BY age ASC(DESC)"
iOS:SQL的更多相关文章
- MyBatis3:SQL映射
前言 前面学习了config.xml,下面就要进入MyBatis的核心SQL映射了,第一篇文章的时候,student.xml里面是这么写的: <?xml version="1.0&qu ...
- iOS:小技巧(不断更新)
记录下一些不常用技巧,以防忘记,复制用. 1.获取当前的View在Window的frame: UIWindow * window=[[[UIApplication sharedApplication] ...
- iOS:实现图片的无限轮播(二)---之使用第三方库SDCycleScrollView
iOS:实现图片的无限轮播(二)---之使用第三方库SDCycleScrollView 时间:2016-01-19 19:13:43 阅读:630 评论:0 收藏:0 ...
- [SDK2.2]SQL Azure (13) Azure的两种关系型数据库服务:SQL Azure与SQL Server VM的不同
<Windows Azure Platform 系列文章目录> 如果熟悉Windows Azure平台的用户不难发现,对于SQL Server数据库来说,微软提供了两种服务,分别是: -W ...
- SQL Server安全(1/11):SQL Server安全概述
在保密你的服务器和数据,防备当前复杂的攻击,SQL Server有你需要的一切.但在你能有效使用这些安全功能前,你需要理解你面对的威胁和一些基本的安全概念.这篇文章提供了基础,因此你可以对SQL Se ...
- iOS:CYLTabBarController【低耦合集成TabBarController】
导航 与其他自定义TabBarController的区别 集成后的效果 项目结构 使用CYLTabBarController 第一步:使用CocoaPods导入CYLTabBarController ...
- SQL2005:SQL Server 2005还原数据库时出现“不能选择文件或文件组XXX_log用于此操作的解决办法
SQL2005 还原数据库失败,提示如下: SQL Server 2005还原数据库时出现“不能选择文件或文件组XXX_log用于此操作的解决办法 出现错误时操作步骤为:右击数据库--->任务- ...
- iOS:iOS开发非常全的三方库、插件等等
iOS开发非常全的三方库.插件等等 github排名:https://github.com/trending, github搜索:https://github.com/search. 此文章转自git ...
- 转载: SQL Server中的索引
http://www.blogjava.net/wangdetian168/archive/2011/03/07/347192.html 1 SQL Server中的索引 索引是与表或视图关联的磁盘上 ...
随机推荐
- JS_1
学习JS分为哪几步: 1.学习基础语法 JS写在哪 JS输出 JS变量 JS函数 JS分支 JS循环 2.学习JS操作网页DOM树 获取Dom节点 触发Dom事件 对Dom进行修改 3.学习JS对象及 ...
- Linux下mongodb
Linux下mongodb安装: 新建mongodb文件夹 下载安装包 curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3. ...
- 005hystrix.stream信息聚合Turbine
1.POM配置 和普通Spring Boot工程相比,仅仅添加了Turbine和Spring Boot Starter Actuator依赖 <dependencies> <!--添 ...
- 阿里云更懂你的数据库,免费提供DBA服务
阿里云更懂你的数据库,免费提供DBA服务 阿里云云数据库(RDS)管理控制台近期将全面升级为云数据库管家.云数据库管家的使命是提供便捷的操作.贴心的服务.专业的处理建议,帮助用户管理好云数据库. ...
- Spring Boot Async异步执行
异步调用就是不用等待结果的返回就执行后面的逻辑,同步调用则需要等带结果再执行后面的逻辑. 通常我们使用异步操作都会去创建一个线程执行一段逻辑,然后把这个线程丢到线程池中去执行,代码如下: Execut ...
- 提升PPT制作效率和颜值
[大咖分享]By汤帅,PPT定制师 网站有时比素材库更有效 学会多模板整合利用 网站推荐:花瓣,officeplus,演界网,pptstore 演讲提纲 思维导图听课笔记
- python SQLAchemy外键关联
join 1.利用filter import sqlalchemy from sqlalchemy import create_engine from sqlalchemy.ext.declarati ...
- [问题记录]cocos2dx编译打包apk过程&问题记录
目录: 1. 入门 2. 编译 3. 问题 4. 总结 5. 参考 ------------------------------------------------------------------ ...
- GO语言(五)项目搭建
<sorter> |------<src>(手动添加,代码存放处) |------sorter.go |------<algorithm> |--- ...
- 谈谈hashcode和equals的用法
HASH: Hash是散列的意思,就是把任意长度的输入,通过散列算法变换成固定长度的输出,该输出就是散列值.关于散列值,有以下几个关键结论: 1.如果散列表中存在和散列原始输入K相等的记录,那么K必定 ...