ios sqlite 简单使用
//
// ViewController.m
// sqlitedemo
//
// Created by lam_TT on 15-4-11.
// Copyright (c) 2015年 lam_TT. All rights reserved.
// #import "ViewController.h"
#import <sqlite3.h>
@interface ViewController () {
sqlite3 *_db;
} @end @implementation ViewController - (void)viewDidLoad {
[super viewDidLoad];
[self openSQLite];
[self initButton]; } - (void)initButton {
NSArray *array = [[NSArray alloc]initWithObjects:@"增",@"删",@"改",@"查", nil];
for (int i = 0; i < 4; i ++) {
UIButton *button = [[UIButton alloc]init];
button.bounds = CGRectMake(0, 0, 150, 30);
button.tag = 10 + i;
[button setTitle:array[i] forState:UIControlStateNormal];
button.backgroundColor = [UIColor grayColor];
[button addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchUpInside];
button.center = CGPointMake(CGRectGetWidth(self.view.bounds)/2, 100 + i * 50);
[self.view addSubview:button];
}
} #pragma mark - 按钮点击事件 - (void)buttonPressed:(UIButton *)sender {
NSInteger index = sender.tag - 10; switch (index) {
case 0:
[self initInsertData];
break; case 1:
[self initDelete];
break;
case 2:
[self initUpdata];
break;
case 3:
[self initSelect];
break;
} } #pragma mark - 创建数据库
- (void)openSQLite {
// sqlite3 *db;
//路径
NSString *string = [NSString stringWithFormat:@"%@/Documents",NSHomeDirectory()];
NSString *fileName = [string stringByAppendingString:@"/students.sqlite"];
//OC-C
const char *cfileName = fileName.UTF8String; //打开数据库,没有就自动创建
int result = sqlite3_open(cfileName, &_db); if (result == SQLITE_OK) {
NSLog(@"成功打开数据库");
}else {
NSLog(@"打开数据库失败");
}
//可用sqliteManger查看 #pragma mark - 创建表 const char *sql="CREATE TABLE IF NOT EXISTS t_students (id integer PRIMARY KEY AUTOINCREMENT,name text NOT NULL,age integer NOT NULL);"; char *errmsg = NULL; //参数:第一个参数为数据库的句柄(db),第二个参数为sql语句,第三个参数为回调参数,是一个指向函数的指针,如果把callback前面的*改成^则就是一个block代码段,第四个参数可以写NULL,第五个参数为错误信息,用以代码调试。
result = sqlite3_exec(_db, sql, NULL, NULL, &errmsg); if (result == SQLITE_OK) {
NSLog(@"创建表成功");
}else {
printf("创表失败---%s----%s---%d",errmsg,__FILE__,__LINE__);
}
} #pragma mark - 插入数据 - (void)initInsertData { for (int i = 0; i < 20; i ++) {
//1.拼接sql语句 NSString *name = [NSString stringWithFormat:@"数据--%d",arc4random_uniform(100)]; int age = arc4random_uniform(20) + 10; NSString *sql=[NSString stringWithFormat:@"INSERT INTO t_students (name,age) VALUES ('%@',%d);",name,age]; //2.执行sql语句 char *errmsg = NULL;
sqlite3_exec(_db, sql.UTF8String, NULL, NULL, &errmsg);
if (errmsg) { //如果有错误信息
NSLog(@"插入数据失败-- %s",errmsg);
}else {
NSLog(@"插入数据成功");
} } } #pragma mark - 选择(select)查询操作 - (void)initSelect {
//从这个表里面查找年龄小于20得数据
const char *sql="SELECT id,name,age FROM t_students WHERE age<20;";
sqlite3_stmt *stmt = NULL; //进行查询前得准备工作 if (sqlite3_prepare_v2(_db, sql, -1, &stmt, NULL) == SQLITE_OK) { //SQL语句没有问题
NSLog(@"SQL语句没有问题");
//每调用一次sqlite_step函数,stmt就会指向下一条记录
while (sqlite3_step(stmt) == SQLITE_ROW) {
//取出数据
//(1)取出第0列字段得值(int类型得值)
int ID = sqlite3_column_int(stmt, 0);
//(2)取出第2列字段得值(text类型得值)
const unsigned char *name = sqlite3_column_text(stmt, 1);
//(3)取出第2列字段得值
int age = sqlite3_column_int(stmt, 2);
printf("%d %s %d\n",ID,name,age);
} }else {
NSLog(@"查询语句有问题,或者没有数据");
} } #pragma mark - 删除数据 - (void)initDelete {
const char *sql = "delete from t_students";
char *errmsg = NULL;
sqlite3_exec(_db, sql, NULL, NULL, &errmsg);
if (errmsg) {
NSLog(@"删除失败");
}else {
NSLog(@"删除成功");
}
} - (void)initUpdata {
const char *sql = "update t_students set name = '小明' , age = 16 ;";
char *errmsg = NULL;
sqlite3_exec(_db, sql, NULL, NULL, &errmsg);
if (errmsg) {
NSLog(@"修改失败");
}else {
NSLog(@"修改成功");
}
} @end
ios sqlite 简单使用的更多相关文章
- iOS开发数据库篇—SQLite简单介绍
iOS开发数据库篇—SQLite简单介绍 一.离线缓存 在项目开发中,通常都需要对数据进行离线缓存的处理,如新闻数据的离线缓存等. 说明:离线缓存一般都是把数据保存到项目的沙盒中.有以下几种方式 (1 ...
- 【转】 iOS开发数据库篇—SQLite简单介绍
开始学SQLite啦, 原文: http://www.cnblogs.com/wendingding/p/3868893.html iOS开发数据库篇—SQLite简单介绍 一.离线缓存 在项目开发中 ...
- iOS - SQLite Database 操作数据库
iOS - SQLite Database 操作数据库 Sqlite 能被用在ios上做数据处理用,只要你懂得一点sql 就很容易使用sqlite 1:创建一个简单的View based appl ...
- SQLite简单介绍
一.离线缓存 在项目开发中,通常都需要对数据进行离线缓存的处理,如新闻数据的离线缓存等. 说明:离线缓存一般都是把数据保存到项目的沙盒中.有以下几种方式 (1)归档:NSCodeing.NSKeyed ...
- iOS上简单推送通知(Push Notification)的实现
iOS上简单推送通知(Push Notification)的实现 根据这篇很好的教程(http://www.raywenderlich.com/3443/apple-push-notification ...
- iOS sqlite数据库实现(转)
转载自:http://www.cnblogs.com/macroxu-1982/archive/2012/10/01/2709960.html 1 实现过程添加libsqlite3组件 选择项目后,在 ...
- ios sqlite的创建数据库,表,插入查看数据
iOS sqlite数据库操作.步骤是: 先加入sqlite开发库libsqlite3.dylib, 新建或打开数据库, 创建数据表, 插入数据, 查询数据并打印 1.新建项目sqliteDemo,添 ...
- iOS CAReplicatorLayer 简单动画
代码地址如下:http://www.demodashi.com/demo/11601.html 写在最前面,最近在看学习的时候,偶然间发现一个没有用过的Layer,于是抽空研究了下,本来应该能提前记录 ...
- iOS sqlite
iOS sqlite数据库操作.步骤是: 先加入sqlite开发库libsqlite3.dylib, 新建或打开数据库, 创建数据表, 插入数据, 查询数据并打印 1.新建项目sqliteDemo,添 ...
随机推荐
- Azure 项目构建 – 构建直播教学系统之媒体服务篇
本课程主要介绍如何在 Azure 平台上快速构建和部署基于 Azure 媒体服务的点播和直播教学系统, 实践讲解如何使用 Azure 门户创建媒体服务, 配置视频流进行传输,连接 CDN 加速等. 具 ...
- OPENFIRE 使用Hazelcast插件进行集群
参考资料:http://www.linuxidc.com/Linux/2014-01/94850.htm https://www.igniterealtime.org/projects/openf ...
- 文本编辑器vim/vi用法完全解读
vi用法 1.启动vim 2.命令模式和输入模式 3.退出vi 4.vi与ex命令 5.移动光标 6.跳转 7.搜索 8.插入文本 9.修改文本 10.替换文本 11.删除文本 12.恢复和撤销改变 ...
- Vue 打印预览功能
需求有几种情况: 1.直接在HTML写页面,将页面上的东西用A4纸打印出来: 2.后台传回PDF文件,前台浏览器预览并打印: 3.后台做好要打印的,传回图片,如base64编码,前台浏览器 预览并打印 ...
- VIM C语言函数名高亮
VIM默认情况下,函数名是不会高亮的,将下面这段代码添加到/usr/share/vim/vim73/syntax/c.vim文件的末尾即可: "highlight Functions s ...
- C++ lvalue,prvalue,xvalue,glvalue和rvalue详解(from cppreference)
General 每一个C++表达式(一个操作符和它的操作数,一个字面值,一个变量名等等)都代表着两个独立属性:类型+属性分类.在现代C++中 glvalue(泛左值) = lvalue (传统意义上的 ...
- shell脚本,如何监控mysql数据库。
[root@localhost wyb]# cat jkmysql #!/bin/bash status=`/etc/init.d/mysqld status|grep running|wc -l` ...
- RedHat7搭建KVM虚拟机
RedHat7搭建KVM虚拟机 1. 宿主机安装RedHat7.3系统 1.1选择语言 中文.简体中文(中国) 1.2安装位置 1.2.1自定义分区,选择LVM,将分区空间全部分配给根 1.2.2禁用 ...
- netstat Recv-Q和Send-Q详解
http://blog.csdn.net/sjin_1314/article/details/9853163 通过netstat -anp可以查看机器的当前连接状态: Active Interne ...
- CS193p Lecture 9 - Animation, Autolayout
Animation(动画) Demo Dropit续 Autolayout(自动布局) 三种添加自动布局的方法: 使用蓝色辅助虚线,右键选择建议约束(Reset to Suggested Constr ...