ios简单数据库运用
一.添加类
二.打开数据库
三.创表
四.插入数据
五.取出数据
一.添加类
1.在设置Linked Frameworks and Libraries 中,点加号并添加libsqlite3.0.dylib.
2.在控制器.m文件中,添加头文件#import<sqlite3.h>
二.打开数据库
sqlite3 *db = NULL;//创建数据库对象实例
int status = sqlite3_open(filename.UTF8String, &db);//打开数据库,返回的是bool类型。记得将OC转为c语言
三.创表
//squlite3_exec(sqlite3 *, const char *sql,int(*callback)(void *,int,char **),void *,char **errmsg);//一般用在没有返回值
const char *sql = "CREATE TABLE IF NOT EXISTS t_shop (id integer PRIMARY KEY, name text NOT NULL, price real);";
char *errmsg = NULL;sqlite3_exec(self.db, sql, NULL, NULL, &errmsg);四.插入数据
NSString *sql = [NSString stringWithFormat:@"INSERT INTO t_shop(name, price) VALUES ('%@', %f);", self.nameField.text, self.priceField.text.doubleValue]; sqlite3_exec(self.db, sql.UTF8String, NULL, NULL, NULL); // 刷新表格
五.取出数据
NSString *sql = [NSString stringWithFormat:@"SELECT name,price FROM t_shop WHERE name LIKE '%%%@%%' OR price LIKE '%%%@%%' ;", searchText, searchText];
// stmt是用来取出查询结果的
sqlite3_stmt *stmt = NULL;
// 准备
int status = sqlite3_prepare_v2(self.db, sql.UTF8String, -1, &stmt, NULL);
if (status == SQLITE_OK) { // 准备成功 -- SQL语句正确
while (sqlite3_step(stmt) == SQLITE_ROW) { // 成功取出一条数据
const char *name = (const char *)sqlite3_column_text(stmt, 0);
const char *price = (const char *)sqlite3_column_text(stmt, 1); HMShop *shop = [[HMShop alloc] init];
shop.name = [NSString stringWithUTF8String:name];
shop.price = [NSString stringWithUTF8String:price];
[self.shops addObject:shop];
}
} [self.tableView reloadData];
六.模糊查询
a.增加搜索框
b.设置代理<UISearchBarDelegate>
searchBar.delegeta = self;
c.实现- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText
D.数据库语句NSString *sql = [NSString stringWithFormat:@"SELECT name,price FROM t_shop WHERE name LIKE '%%%@%%' OR price LIKE '%%%@%%' ;", searchText, searchText];
代码:
#import "HMViewController.h"
#import <sqlite3.h>
#import "HMShop.h" @interface HMViewController () <UITableViewDataSource, UISearchBarDelegate>
@property (weak, nonatomic) IBOutlet UITextField *nameField;
@property (weak, nonatomic) IBOutlet UITextField *priceField;
/** 数据库对象实例 */
@property (nonatomic, assign) sqlite3 *db;
@property (weak, nonatomic) IBOutlet UITableView *tableView;
- (IBAction)insert;
@property (nonatomic, strong) NSMutableArray *shops;
@end @implementation HMViewController - (NSMutableArray *)shops
{
if (!_shops) {
self.shops = [[NSMutableArray alloc] init];
}
return _shops;
} - (void)viewDidLoad
{
[super viewDidLoad]; // 增加搜索框
UISearchBar *searchBar = [[UISearchBar alloc] init];
searchBar.frame = CGRectMake(0, 0, 320, 44);
searchBar.delegate = self;
self.tableView.tableHeaderView = searchBar; // 初始化数据库
[self setupDb]; // 查询数据
[self setupData]; // 关闭数据库
// sqlite3_close();
} #pragma mark - UISearchBarDelegate
- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText
{
[self.shops removeAllObjects]; NSString *sql = [NSString stringWithFormat:@"SELECT name,price FROM t_shop WHERE name LIKE '%%%@%%' OR price LIKE '%%%@%%' ;", searchText, searchText];
// stmt是用来取出查询结果的
sqlite3_stmt *stmt = NULL;
// 准备
int status = sqlite3_prepare_v2(self.db, sql.UTF8String, -1, &stmt, NULL);
if (status == SQLITE_OK) { // 准备成功 -- SQL语句正确
while (sqlite3_step(stmt) == SQLITE_ROW) { // 成功取出一条数据
const char *name = (const char *)sqlite3_column_text(stmt, 0);
const char *price = (const char *)sqlite3_column_text(stmt, 1); HMShop *shop = [[HMShop alloc] init];
shop.name = [NSString stringWithUTF8String:name];
shop.price = [NSString stringWithUTF8String:price];
[self.shops addObject:shop];
}
} [self.tableView reloadData];
} /**
查询数据
*/
- (void)setupData
{
const char *sql = "SELECT name,price FROM t_shop;";
// stmt是用来取出查询结果的
sqlite3_stmt *stmt = NULL;
// 准备
int status = sqlite3_prepare_v2(self.db, sql, -1, &stmt, NULL);
if (status == SQLITE_OK) { // 准备成功 -- SQL语句正确
while (sqlite3_step(stmt) == SQLITE_ROW) { // 成功取出一条数据
const char *name = (const char *)sqlite3_column_text(stmt, 0);
const char *price = (const char *)sqlite3_column_text(stmt, 1); HMShop *shop = [[HMShop alloc] init];
shop.name = [NSString stringWithUTF8String:name];
shop.price = [NSString stringWithUTF8String:price];
[self.shops addObject:shop];
}
}
} /**
初始化数据库
*/
- (void)setupDb
{
// 打开数据库(连接数据库)
NSString *filename = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingPathComponent:@"shops.sqlite"];
// 如果数据库文件不存在, 系统会自动创建文件自动初始化数据库
int status = sqlite3_open(filename.UTF8String, &_db);
if (status == SQLITE_OK) { // 打开成功
NSLog(@"打开数据库成功"); // 创表
const char *sql = "CREATE TABLE IF NOT EXISTS t_shop (id integer PRIMARY KEY, name text NOT NULL, price real);";
char *errmsg = NULL;
sqlite3_exec(self.db, sql, NULL, NULL, &errmsg);
if (errmsg) {
NSLog(@"创表失败--%s", errmsg);
}
} else { // 打开失败
NSLog(@"打开数据库失败");
}
} - (IBAction)insert {
NSString *sql = [NSString stringWithFormat:@"INSERT INTO t_shop(name, price) VALUES ('%@', %f);", self.nameField.text, self.priceField.text.doubleValue];
sqlite3_exec(self.db, sql.UTF8String, NULL, NULL, NULL); // 刷新表格
HMShop *shop = [[HMShop alloc] init];
shop.name = self.nameField.text;
shop.price = self.priceField.text;
[self.shops addObject:shop];
[self.tableView reloadData];
} #pragma mark - 数据源方法
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return self.shops.count;
} - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *ID = @"shop";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:ID];
if (!cell) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:ID];
cell.backgroundColor = [UIColor grayColor];
} HMShop *shop = self.shops[indexPath.row];
cell.textLabel.text = shop.name;
cell.detailTextLabel.text = shop.price; return cell;
}
@end
ios简单数据库运用的更多相关文章
- iOS开发数据库篇—SQLite简单介绍
iOS开发数据库篇—SQLite简单介绍 一.离线缓存 在项目开发中,通常都需要对数据进行离线缓存的处理,如新闻数据的离线缓存等. 说明:离线缓存一般都是把数据保存到项目的沙盒中.有以下几种方式 (1 ...
- iOS开发数据库篇—FMDB简单介绍
iOS开发数据库篇—FMDB简单介绍 一.简单说明 1.什么是FMDB FMDB是iOS平台的SQLite数据库框架 FMDB以OC的方式封装了SQLite的C语言API 2.FMDB的优点 使用起来 ...
- 【转】 iOS开发数据库篇—SQLite简单介绍
开始学SQLite啦, 原文: http://www.cnblogs.com/wendingding/p/3868893.html iOS开发数据库篇—SQLite简单介绍 一.离线缓存 在项目开发中 ...
- iOS开发数据库篇—SQL
iOS开发数据库篇—SQL 一.SQL语句 如果要在程序运行过程中操作数据库中的数据,那得先学会使用SQL语句 1.什么是SQL SQL(structured query language):结构化查 ...
- iOS开发数据库篇—SQL代码应用示例
iOS开发数据库篇—SQL代码应用示例 一.使用代码的方式批量添加(导入)数据到数据库中 1.执行SQL语句在数据库中添加一条信息 插入一条数据的sql语句: 点击run执行语句之后,刷新数据 2.在 ...
- iOS开发数据库篇—SQLite的应用
iOS开发数据库篇—SQLite的应用 一.简单说明 在iOS中使用SQLite3,首先要添加库文件libsqlite3.dylib和导入主头文件. 导入头文件,可以使用库中的函数(是纯C语言的) 二 ...
- IOS开发数据库篇—SQLite模糊查询
IOS开发数据库篇—SQLite模糊查询 一.示例 说明:本文简单示例了SQLite的模糊查询 1.新建一个继承自NSObject的模型 该类中的代码: // // YYPerson.h // 03- ...
- iOS开发数据库篇—SQLite常用的函数
iOS开发数据库篇—SQLite常用的函数 一.简单说明 1.打开数据库 int sqlite3_open( const char *filename, // 数据库的文件路径 sqlite3 * ...
- iOS开发 数据库FMDB
iOS开发 数据库FMDB 1.简介 需求作用: 如果需要保存大量的结构较为复杂的数据时候, 使用数据库, 例如交规考试项目 常用的数据库: (1)Microsoft SQL Server 2000 ...
随机推荐
- 关于 JavaScript 数据类型判断
在 JavaScript 中,有 undefined.null.number.string.boolean 五种基本数据类型,另外,有一种复杂数据类型 object ,类似于 C# 中值类型.引用类型 ...
- 2016 Mac OS 10.11 CocoaPods的安装问题
CocoaPods的安装问题: 1.首先用淘宝的Ruby镜像来访问CocoaPods,打开终端输入以下命令: (1)gem sources --remove https://rubygems.org ...
- iOS安全系列之一:HTTPS (轉載)
如何打造一个安全的App?这是每一个移动开发者必须面对的问题.在移动App开发领域,开发工程师对于安全方面的考虑普遍比较欠缺,而由于iOS平台的封闭性,遭遇到的安全问题相比于Android来说要少得多 ...
- 【新闻】超灵敏MRI技术:照亮人体肺部
人口健康直接影响到一个国家的经济发展和社会进步.据我国2013年发布的肿瘤发病率统计年报表明,肺癌是我国目前首位恶性肿瘤,是癌症死亡的头号杀手,目前城市中每4名死亡的癌症患者中,约有1名是肺癌.如何开 ...
- android飞机游戏敌机移动路径
基础android的飞机类游戏,与前人一样,由surfaceView绘制游戏画面,另起线程控制绘制时间间隔达到动态效果.这里附上最近自己写的敌机自动飞行路径代码.请大家给点意见. 在敌机管理模块,加入 ...
- C#-datagridview隐藏行头
在进行datagridview的设置的过程中,常常会遇到需要设定datagridview1的行头显示,这就需要用到datagridview的属性: RowHeadersVisible属性设置为fals ...
- 关于android的Activity的四种启动模式
最近做项目遇到一个问题,当触摸屏幕的时候通过intent启动activity,发现会启动多次,而后查阅资料,发现,原来是activity的模式设置问题. Activity的启动模式可以通过Androi ...
- 写给新入IT的新人们
IT=挨踢,这是IT人的自嘲,进入IT行业是有四五年了,也算得上是一个"老人"了吧,见了不少新人,面试了不少新人,也带了一些新人,多多少少还是有点发言权的. 关于书本 新人们经常会 ...
- Java Annotations: Explored & Explained--转载
原文地址:http://www.javacodegeeks.com/2012/08/java-annotations-explored-explained.html One of the many w ...
- springMVC学习笔记二
六.springmvc的注解 xml的配置→注解 1.新建一个配置文件还是在config下 新建springAnnotation-servlet.xml web.xml 修改初始化为<param ...