ios sqlite数据库操作
@interface MyViewController () {
// 数据库实例,代表着整个数据库
sqlite3 *_db;
}
@end
@implementation MyViewController
- (void)viewDidLoad
{
[super viewDidLoad];
[self openDB];
[self createTables];
for (int i = ; i<; i++) {
//[self insertData];
}
[self findData];
// 关闭数据库
sqlite3_close(_db);
}
#pragma mark 查询数据
- (void)findData {
char *sql = "select id,name,age from t_person;";
sqlite3_stmt *stmt;
// sqlite3_prepare_v2做一些插入数据的准备
// 主要是检查SQL语句的语法问题
int result = sqlite3_prepare_v2(_db, sql, -, &stmt, NULL);
// 说明语句没有语法问题
if (result == SQLITE_OK) {
// 如果返回值是ROW,代表读取到一行数据
while (sqlite3_step(stmt) == SQLITE_ROW) {
// 列号从0开始
int ID = sqlite3_column_int(stmt, );
char *name = (char *)sqlite3_column_text(stmt, );
int age = sqlite3_column_int(stmt, );
NSLog(@"id=%i,name=%s,age=%i", ID, name, age);
}
} else {
NSLog(@"查询数据的SQL语句语法有问题");
}
}
#pragma mark 插入数据
- (void)insertData {
char *sql = "insert into t_person(name, age) values(?, ?);";
sqlite3_stmt *stmt;
// sqlite3_prepare_v2做一些插入数据的准备
// 主要是检查SQL语句的语法问题
int result = sqlite3_prepare_v2(_db, sql, -, &stmt, NULL);
// 说明语句没有语法问题
if (result == SQLITE_OK) {
// 第2个int类型的参数用来指定第几列,从1开始
// 绑定name字段的值
sqlite3_bind_text(stmt, , "mj", -, NULL);
// 绑定age字段的值
sqlite3_bind_int(stmt, , );
// 执行sql语句
if (sqlite3_step(stmt) != SQLITE_DONE) {
NSLog(@"插入数据失败!");
} else {
NSLog(@"插入数据成功!");
}
} else {
NSLog(@"插入数据的SQL语句语法有问题");
}
}
#pragma mark 打开数据库
- (void)openDB {
// 数据库文件路径
NSString *filename = [@"sqlite.db" documentsAppend];
// 如果数据库不存在,就会创建一个
int result = sqlite3_open([filename UTF8String], &_db);
if (result == SQLITE_OK) {
NSLog(@"打开数据库成功!");
}
}
#pragma mark 创建表
- (void)createTables {
char *sql = "create table if not exists t_person(id integer primary key autoincrement, name text, age integer);";
char *error;
// sqlite3_exec能执行一切SQL语句
// insert into t_person(name, age) values('mj', 10);
int result = sqlite3_exec(_db, sql, NULL, NULL, &error);
if (result != SQLITE_OK) {
NSLog(@"创表错误:%s", error);
}
}
@end
ios sqlite数据库操作的更多相关文章
- IOS SQLITE 数据库操作
NSArray * array = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); N ...
- iOS sqlite数据库实现(转)
转载自:http://www.cnblogs.com/macroxu-1982/archive/2012/10/01/2709960.html 1 实现过程添加libsqlite3组件 选择项目后,在 ...
- iOS 中SQLite数据库操作
在iOS中实现SQLite数据库的操作:1.导入框架(libsqlite3.0.tbd) 2.导入头文件<sqlite3.h> 3.实现数据的增删改查 实现简单 SQLite数据库操作 的 ...
- iOS - SQLite Database 操作数据库
iOS - SQLite Database 操作数据库 Sqlite 能被用在ios上做数据处理用,只要你懂得一点sql 就很容易使用sqlite 1:创建一个简单的View based appl ...
- 实验8 SQLite数据库操作
实验报告 课程名称 实验8 SQLite数据库操作 实验日期 2016.5.6 实验项目名称 多媒体应用开发 实验地点 S30010 实验类型 □验证型 √设计型 □综合型 学 时 一 ...
- 我的Android六章:Android中SQLite数据库操作
今天学习的内容是Android中的SQLite数据库操作,在讲解这个内容之前小编在前面有一篇博客也是讲解了SQLite数据库的操作,而那篇博客的讲解是讲述了 如何在Window中通过DOM来操作数据库 ...
- [python]用Python进行SQLite数据库操作
用Python进行SQLite数据库操作 1.导入Python SQLITE数据库模块 Python2.5之后,内置了SQLite3,成为了内置模块,这给我们省了安装的功夫,只需导入即可~ ]: u ...
- 安卓 SQLite数据库操作实例
前段时间写了个安卓平台下SQLite数据库操作的实例 ,一直没得时间总结 ,今天把它弄出来了. 在Android 运行时环境包含了完整的 SQLite. 首先介绍一下SQLite这个数据库: SQLi ...
- 在安卓开发中使用SQLite数据库操作实例
前段时间写了个安卓平台下SQLite数据库操作的实例 ,一直没得时间总结 ,今天把它弄出来了. 在Android 运行时环境包含了完整的 SQLite. 首先介绍一下SQLite这个数据库: SQLi ...
随机推荐
- nodejs学习(二)--express热更新nodemon,自启动项目
一.说一下 每次修改文件,我们都需要重启服务器npm start,很麻烦,所以使用引入nodemon插件,解决这个问题,实现保存文件,即自启动刷新项目 二.直接开码 npm install nodem ...
- 源码安装 ipython
https://blog.csdn.net/huobanjishijian/article/details/51470898
- 洛谷 P2372 yyy2015c01挑战算周长
P2372 yyy2015c01挑战算周长 题目背景 yyy2015c01快速的解决了问题,受到邻居们的赞许,高兴的回到家,把糖给了妈妈,吃了香喷喷的午饭,又睡了一个甜甜的午觉,感觉人生真美好.下午爸 ...
- 项目EasyUi和JS中遇到的问题总汇
近期因为项目用到EasyUi,曾经仅仅是听过,可是没有详细用过.仅仅能一边学一边做.如今将做的过程中遇到的一些难点总结例如以下,以备后用: EsayUi使用: Json格式:key:value,key ...
- 【Android Studio探索之路系列】之六:Android Studio加入依赖
作者:郭孝星 微博:郭孝星的新浪微博 邮箱:allenwells@163.com 博客:http://blog.csdn.net/allenwells github:https://github.co ...
- 程序猿的量化交易之路(14)--Cointrader数据表(2)
Cointrader表结构 转载须注明出处:http://blog.csdn.net/minimicall?viewmode=contents,http://cloudtrader.top 设置(se ...
- JavaScript作用域闭包(你不知道的JavaScript)
JavaScript闭包.是JS开发project师必须深入了解的知识. 3月份自己曾撰写博客<JavaScript闭包>.博客中仅仅是简单阐述了闭包的工作过程和列举了几个演示样例,并没有 ...
- 程序猿果真有前端后端client吗
前端 后端 client DBA OP 程序猿有分这么细的吗? 入行时候有区别. 殊途同归 吾道一以贯之, 假设作为程序猿不能领悟一贯, 则永远不清楚.
- js03 数组
变量的自动转换=== 等同符:不会发生类型的自动转化! == 等值符:会发生类型自动转化.自动匹配!判断相等没有equals()方法,只有2个等号3个等号. <!DOCTYPE HTML PUB ...
- 关于大数据项目创建时所需setting.xml(博主推荐)
我目前,收录经常用的是,这两个版本,这个根据博主我本人的经验之谈,最为稳定和合理的. 注意:我的本地路径是在D:/SoftWare/maven/repository,大家自己改为你们自己的即可. ...