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