iOS进阶道路 --SQLite使用
来源:互联网 发布:联通大数据平台 编辑:程序博客网 时间:2024/06/06 01:17
iOS系统自带数据库SQLite的使用
本文开发环境:Xcode8.3.3
本文介绍如何使用iOS系统自带的数据库,来体验一下原汁原味的SQLite。为什么要用原生的SQLite而不用github上现成的工具FMDB(https://github.com/ccgus/fmdb),纯粹只是为了熟悉一下SQLite语句而已。
一:导入需要用到的系统库
1: 单击项目导航面板TARGETS目录下的项目名,再单击项目编辑区的‘Build Phases’标签页,显示下图的界面。
2: 点击‘+’输入“sqlite”,选择“libsqlite3.0.tbd”添加就大功告成了。
二:配置完成了,上代码。
1: ViewController.m文件中,#import <sqlite3.h>包含头文件。接下来即可在程序中使用SQLite的API执行数据库访问了。
或者也可以将执行sql的语句放在一个方法中,建表,增加一条记录,更新一条记录,都可以调用。
增加两个记录
更新一个记录
删除一个记录
查找记录
至此,我已经熟悉了系统自带的SQLite的增删改查功能,是不是已经迫不及待的要试一试了呢?
本文介绍的SQLite用法,或有不当之处敬请各位大牛指正。
一:导入需要用到的系统库
1: 单击项目导航面板TARGETS目录下的项目名,再单击项目编辑区的‘Build Phases’标签页,显示下图的界面。
2: 点击‘+’输入“sqlite”,选择“libsqlite3.0.tbd”添加就大功告成了。
二:配置完成了,上代码。
1: ViewController.m文件中,#import <sqlite3.h>包含头文件。接下来即可在程序中使用SQLite的API执行数据库访问了。
//指定数据库存储路径 NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documents = [paths objectAtIndex:0]; NSString *database_path = [documents stringByAppendingPathComponent:@"test.sqlite"]; //打开或创建一个SQLite数据库 sqlite3 *sqlite; if (sqlite3_open([database_path UTF8String], &sqlite) != SQLITE_OK){ NSLog(@"数据库打开失败"); sqlite3_close(sqlite); } //执行建表语句 char *errMsg; const char * createSQL = "create table if not exists word_inf (id integer primary key autoincrement,name text,age integer,adress text)"; int result = sqlite3_exec(sqlite, createSQL, NULL, NULL, &errMsg); if (result == SQLITE_OK) { const char *insertSQL = "insert into word_inf (name,age,adress) values(?,?,?)"; sqlite3_stmt * stmt; //预编译SQL语句,stmt变量保存了预编译结果的指针 int insertResult = sqlite3_prepare_v2(sqlite, insertSQL, -1, &stmt, nil); //如果预编译成功 if (insertResult == SQLITE_OK) { //为第一个?占位符绑定参数 sqlite3_bind_text(stmt, 1, [@"哥哥" UTF8String], -1, NULL); //为第二个?占位符绑定参数 sqlite3_bind_text(stmt, 2, [@"27" UTF8String], -1, NULL); //为第三个?占位符绑定参数 sqlite3_bind_text(stmt, 3, [@"北京" UTF8String], -1, NULL); //执行SQL语句 sqlite3_step(stmt); } sqlite3_finalize(stmt); } //关闭数据库 sqlite3_close(sqlite);
或者也可以将执行sql的语句放在一个方法中,建表,增加一条记录,更新一条记录,都可以调用。
- (void)execSQl:(NSString*)sql { char *err; if (sqlite3_exec(sqlite, [sql UTF8String], NULL, NULL, &err) != SQLITE_OK) { sqlite3_close(sqlite); NSLog(@"数据库操作失败!"); }}
增加两个记录
NSString *insertSQL_01 = @"insert into word_inf (name,age,adress) values('哥哥','27','北京')"; [self execSQl:insertSQL_01]; NSString *insertSQL_02 = @"insert into word_inf (name,age,adress) values('妹妹','25','北京')"; [self execSQl:insertSQL_02];
更新一个记录
NSString *updateSQL = @"update word_inf set name='宝宝',adress='中国' where name='妹妹'"; [self execSQl:updateSQL];
删除一个记录
NSString *deleteSQL = @"delete from word_inf where name = '哥哥'"; [self execSQl:deleteSQL];
查找记录
const char *fetchSQL = "select id,name,age,adress from word_inf where name='宝宝'"; sqlite3_stmt *stmt; int fetchResult = sqlite3_prepare_v2(sqlite, fetchSQL, -1, &stmt, nil); if (fetchResult != SQLITE_OK) NSLog(@"查询失败 ..."); else{ while (sqlite3_step(stmt) == SQLITE_ROW) { //查询的结果可能不止一条,直到 sqlite3_step(stmt) == SQLITE_ROW,查询结束 int ID = sqlite3_column_int(stmt, 0); char *name = (char *)sqlite3_column_text(stmt, 1); int age = sqlite3_column_int(stmt, 2); char *adress = (char *)sqlite3_column_text(stmt, 3); NSLog(@"ID=%d name=%s age=%d adress=%s",ID,name,age,adress); } }
至此,我已经熟悉了系统自带的SQLite的增删改查功能,是不是已经迫不及待的要试一试了呢?
本文介绍的SQLite用法,或有不当之处敬请各位大牛指正。
阅读全文
1 0
- iOS进阶道路 --SQLite使用
- ios简单sqlite使用
- ios简单sqlite使用
- ios简单sqlite使用
- ios简单sqlite使用
- iOS-简单sqlite使用
- iOS 使用sqlite步骤
- ios简单sqlite使用
- iOS使用SQLite编程
- ios sqlite 的使用
- iOS使用SQLite编程
- iOS: MagicRecord使用SQLite
- IOS 使用sqlite
- IOS--SQLite使用
- iOS sqlite的使用
- iOS-SQLite数据库使用
- iOS SQLite的使用
- iOS sqlite的使用
- eclipse导入myeclipse的web项目没法识别问题解决
- OpenCV人脸识别实验(二)——特征脸(fisherface)及其重构的源代码详解
- [leetcode]74. Search a 2D Matrix(Java)
- CentOS-CentOS原始/etc/pam.d/system-auth文件内容
- UIApplication详解
- iOS进阶道路 --SQLite使用
- 简单shell学习(1)
- Unity3D 07-日志、文本打印
- Python 数据类型--字典(dict)基本操作
- 配置https 的时候 nginx +php 遇到关于No input file specified.
- 关于加密
- Java并发容器之LinkedBlockingQueue
- powershell: 判断PSObject中是否有指定property的靠谱方法
- CRC-32校验和CRC-32校验代码