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的更多相关文章

  1. MyBatis3:SQL映射

    前言 前面学习了config.xml,下面就要进入MyBatis的核心SQL映射了,第一篇文章的时候,student.xml里面是这么写的: <?xml version="1.0&qu ...

  2. iOS:小技巧(不断更新)

    记录下一些不常用技巧,以防忘记,复制用. 1.获取当前的View在Window的frame: UIWindow * window=[[[UIApplication sharedApplication] ...

  3. iOS:实现图片的无限轮播(二)---之使用第三方库SDCycleScrollView

    iOS:实现图片的无限轮播(二)---之使用第三方库SDCycleScrollView 时间:2016-01-19 19:13:43      阅读:630      评论:0      收藏:0   ...

  4. [SDK2.2]SQL Azure (13) Azure的两种关系型数据库服务:SQL Azure与SQL Server VM的不同

    <Windows Azure Platform 系列文章目录> 如果熟悉Windows Azure平台的用户不难发现,对于SQL Server数据库来说,微软提供了两种服务,分别是: -W ...

  5. SQL Server安全(1/11):SQL Server安全概述

    在保密你的服务器和数据,防备当前复杂的攻击,SQL Server有你需要的一切.但在你能有效使用这些安全功能前,你需要理解你面对的威胁和一些基本的安全概念.这篇文章提供了基础,因此你可以对SQL Se ...

  6. iOS:CYLTabBarController【低耦合集成TabBarController】

    导航 与其他自定义TabBarController的区别 集成后的效果 项目结构 使用CYLTabBarController 第一步:使用CocoaPods导入CYLTabBarController ...

  7. SQL2005:SQL Server 2005还原数据库时出现“不能选择文件或文件组XXX_log用于此操作的解决办法

    SQL2005 还原数据库失败,提示如下: SQL Server 2005还原数据库时出现“不能选择文件或文件组XXX_log用于此操作的解决办法 出现错误时操作步骤为:右击数据库--->任务- ...

  8. iOS:iOS开发非常全的三方库、插件等等

    iOS开发非常全的三方库.插件等等 github排名:https://github.com/trending, github搜索:https://github.com/search. 此文章转自git ...

  9. 转载: SQL Server中的索引

    http://www.blogjava.net/wangdetian168/archive/2011/03/07/347192.html 1 SQL Server中的索引 索引是与表或视图关联的磁盘上 ...

随机推荐

  1. csharp:.net 3.5 using System.Runtime.Serialization.Json read json

    using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We ...

  2. org.apache.ibatis.binding.BindingException

    1.异常提示: org.apache.ibatis.binding.BindingException: Mapper method 'com.artup.dao.WorksDao.selectWork ...

  3. 各种优化方法总结比较(sgd/momentum/Nesterov/adagrad/adadelta)

    前言 这里讨论的优化问题指的是,给定目标函数f(x),我们需要找到一组参数x,使得f(x)的值最小. 本文以下内容假设读者已经了解机器学习基本知识,和梯度下降的原理. SGD SGD指stochast ...

  4. angular 动态组件类型

    出处:https://github.com/Penggggg/angular-component-practices 组件类型1:纯函数功能,而没有视图部分,即Factory(类似于$http) pr ...

  5. Eclipse如何设置编译文件.class输出路径

    1.首先我发现我的eclipse中-->project-->build automatically 是勾选上的.好吧,把把前面的勾去掉. 2去掉以后我先clean --> Clean ...

  6. java img图片转pdf 工具类

    package com.elitel.hljhr.comm.web.main.controller; import java.io.File; import java.io.FileNotFoundE ...

  7. [翻译] RKCardView

    RKCardView Beautiful Twitter / Facebook style cards (built with @JaredTMoskowitz) Follow me on Twitt ...

  8. Redis 优化之 tcp-backlog

    默认值 511 tcp-backlog:511 此参数确定了TCP连接中已完成队列(完成三次握手之后)的长度, 当然此值必须不大于Linux系统定义的/proc/sys/net/core/somaxc ...

  9. 如何深入理解一套MQ消息中间件

    怎样算是理解了一套MQ中间件呢?原来一知半解的我列了几个维度:demo跑起来,理解其投递次数的语义,理解其事务的特性等等.这是一种角度,但总有种看山不是山的一知半解的感觉.再问一层,比如为什么Kafk ...

  10. MacOS上好用的软件

    持续补充中…… 记录一些除了MacOS(Sierra)自带工具外,其他好用的软件. 截屏软件 Jietu——在AppStore中查找“Jietu”就可以找到这款软件.这是腾讯出品的一款用于MacOS系 ...