FMDB是将sqlite3的语法封装成OC的语法
基于sqlite3的
使用的步骤:
1.创建打开一个数据库
2.向数据库里添加一个表
3.数据的增删改查
首先这里要使用一个第三方库fmdb,导入这个之后,操作如下添加-fno-objc-arc
然后连接库中连接libsqlite3
代码如下:
//
// ViewController.m
// 01-FMDB的基本适用
//
// Created byon 16/5/4.
// Copyright (c) 2016年 鹿微微鹿. All rights reserved.
//
//FMDB将sqlite3的语法封装成了OC的语法
//基于sqlite3
//适用步骤:1.创建打开一个数据库
//2.向数据库里添加一个表
//3.数据的增删改查
#import "ViewController.h"
#import "FMDatabase.h"
@interface ViewController (){
FMDatabase *_db ;
}
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
//1.创建/打开数据库
[self createDB];
//2.添加表
[self createTable];
//3.添加数据
//[self insertData];
//4.数据查询
[self selectData];
}
#pragma mark - 创建或者打开数据库
- (void) createDB{
//1.创建数据库对象
//参数:数据库的路径
//数据库文件的后缀可以是.sqlite也可以是.db;
_db = [[FMDatabase alloc]initWithPath:@"/Users/IOS1601/Desktop/my files/网络第一周/day7/数据库文件/user.db"];
//2.打开数据库(如果数据库已经存在就直接打开,如果不存在就先创建这个数据库然后再打开)
//返回值就是操作是否成功;
BOOL ret = [_db open];
//3.判断数据库打开是否成功
if (ret) {
NSLog(@"数据库打开成功");
}else{
NSLog(@"数据库打开失败");
}
}
#pragma mark - 添加表
- (void)createTable{
//1.创建sql语句
NSString *sql = @"CREATE TABLE IF NOT EXISTS t_person (id integer PRIMARY KEY AUTOINCREMENT,name text NOT NULL,sex text,age integer DEFAULT 10);";
//2.执行sql语句
//executeUpdate方法是用来执行DDL和DML语句的
//DQL不可以适用这个方法来执行
//返回值:是否成功执行
BOOL ret = [_db executeUpdate:sql];
//3.判断是否成功
if (ret) {
NSLog(@"创建表成功");
}else{
NSLog(@"创建表失败");
}
}
#pragma mark - 添加数据
- (void) insertData{
//===============插入单条数据================
//1.创建sql语句
NSString *sql = @"INSERT INTO t_person (name,sex,age) VALUES ('fanjuan','女',22);";
//2.执行sql语句
BOOL ret = [_db executeUpdate:sql];
//3.判断是否成功
if (ret) {
NSLog(@"数据插入成功");
}else{
NSLog(@"插入数据失败");
}
//===============插入多条数据===================
for (int i = 0; i<10; i++) {
//?就是sql语法中的占位符号
NSString *sql2 = @"INSERT INTO t_person (name,sex,age) VALUES (?,?,?);";
//姓名
NSString *name = [NSString stringWithFormat:@"樊娟%d",i];
//性别
NSString *sex = arc4random() % 2 == 0 ? @"男":@"女";
//年龄
NSString *age = [NSString stringWithFormat:@"%d",arc4random() %10+10];
//sql语句带占位符,通过executeUpdate来执行,执行的第一个参数
//是sql语句,其他的都是sql语句中占位符对应的值;
BOOL ret = [_db executeUpdate:sql2,name,sex,age];
if (ret) {
NSLog(@"批量插入成功");
}else{
NSLog(@"批量插入失败");
}
}
}
#pragma mark -数据查询
- (void) selectData{
//1.写一个查询的sql语句
NSString *sql = @"SELECT * FROM t_person;";
//2.执行sql语句
//FMResultSet就是结果集
//执行完毕后,会将查询结果放到set中
FMResultSet *set = [_db executeQuery:sql];
//3.遍历结果集
while ([set next]) {
NSString *name = [set objectForColumnName:@"name"];
NSString *sex = [set objectForColumnName:@"sex"];
NSInteger age = [set intForColumn:@"age"];
NSLog(@"%@ %@ %d",name,sex,(int)age);
}
}
@end