FMDB是将sqlite3的语法封装成OC的语法
sql
基于sqlite3的数据库
使用的步骤:网络
1.建立打开一个数据库dom
2.向数据库里添加一个表spa
3.数据的增删改查.net
首先这里要使用一个第三方库fmdb,导入这个以后,操做以下添加-fno-objc-arc3d
而后链接库中链接libsqlite3orm
代码以下:sqlite
//对象
// 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 ;
}
@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