IOS的SQLite数据库FMDB
//
// ViewController.m
// 048_Sqlite使用
//
// Created by user on 15/2/16.
// Copyright © 2015年 zhizuobiao. All rights reserved.
//
#import "ViewController.h"
#import "FMDatabase.h"
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
//按钮标题数组
NSArray* arrTitle = [NSArray arrayWithObjects:
@"创建数据库",@"插入数据",@"删除数据",@"查找显示", nil] ;
//循环创建4个按钮
for (int i = 0 ; i < 4; i++) {
UIButton* btn = [UIButton buttonWithType:UIButtonTypeRoundedRect] ;
btn.frame = CGRectMake(100, 100+80*i, 100, 40) ;
[btn addTarget:self action:@selector(pressBtn:) forControlEvents:UIControlEventTouchUpInside] ;
btn.tag = 100 + i ;
[btn setTitle:arrTitle[i] forState:UIControlStateNormal] ;
[self.view addSubview:btn] ;
}
}
//按下按钮函数
-(void) pressBtn:(UIButton*) btn
{
//创建打开数据库
if (btn.tag == 100)
{
//获取数据库的创建路径
//NSHomeDirectory():获取手机APP的沙盒路径
NSString* strPath = [NSHomeDirectory() stringByAppendingString:@"/Documents/db01.db"] ;
//创建并且打开数据库
//如果路径下面没有数据库,创建指定的数据库
//如果路径下已经存在数据库,加载数据库到内存
_mDB = [FMDatabase databaseWithPath:strPath] ;
if (_mDB != nil)
{
NSLog(@"数据库创建成功!") ;
}
//打开数据库操作
BOOL isOpen = [_mDB open] ;
if (isOpen) {
NSLog(@"打开数据库成功!") ;
}
//创建一个字符串
//将SQL创建语句写到字符串中
NSString* strCreateTable = @"create table if not exists stu(id integer primary key, age integer, name varchar(20));" ;
//执行SQL语句,SQL语句有效
//如果执行成功,返回一个YES结果
//如果失败,返回 NO
BOOL isCreate = [_mDB executeUpdate:strCreateTable] ;
if (isCreate == YES)
{
NSLog(@"创建数据表成功!");
}
//关闭数据库
BOOL isClose = [_mDB close] ;
if (isClose) {
NSLog(@"关闭数据库成功!");
}
}
//添加数据
else if (btn.tag == 101)
{
NSString* strPath = [NSHomeDirectory() stringByAppendingString:@"/Documents/db01.db"] ;
//创建并且打开数据库
//如果路径下面没有数据库,创建指定的数据库
//如果路径下已经存在数据库,加载数据库到内存
_mDB = [FMDatabase databaseWithPath:strPath] ;
//确保数据库被加载
if (_mDB != nil)
{
//打开数据库
if ([_mDB open])
{
NSString* strInsert = @"insert into stu values(3,21,'Will');" ;
BOOL isOK = [_mDB executeUpdate:strInsert] ;
if (isOK == YES)
{
NSLog(@"添加数据成功!");
}
}
}
}
//删除数据
else if (btn.tag == 102)
{
NSString* strPath = [NSHomeDirectory() stringByAppendingString:@"/Documents/db01.db"] ;
//创建并且打开数据库
//如果路径下面没有数据库,创建指定的数据库
//如果路径下已经存在数据库,加载数据库到内存
_mDB = [FMDatabase databaseWithPath:strPath] ;
//创建查找SQL语句
NSString* strDelete = @"delete from stu where id = 3" ;
BOOL isOpen = [_mDB open] ;
if([_mDB executeUpdate:strDelete])
{
NSLog(@"数据删除成功");
}
}
//查找并且打印数据
else
{
NSString* strPath = [NSHomeDirectory() stringByAppendingString:@"/Documents/db01.db"] ;
//创建并且打开数据库
//如果路径下面没有数据库,创建指定的数据库
//如果路径下已经存在数据库,加载数据库到内存
_mDB = [FMDatabase databaseWithPath:strPath] ;
//创建查找SQL语句
NSString* strQuery = @"select * from stu ;" ;
BOOL isOpen = [_mDB open] ;
if (isOpen)
{
//执行查找SQL语句
//将查找成功的结果用ResultSet返回
FMResultSet* result = [_mDB executeQuery:strQuery] ;
//遍历所有结果
while ([result next])
{
//获取id字段内容,根据字段名字来获取
NSInteger stuID = [result intForColumn:@"id"] ;
//获取名字字段内容,根据字段名字来获取
NSString* strName = [result stringForColumn:@"name"] ;
//获取年龄的字段内容,根据字段名字来获取
NSInteger stuAge = [result intForColumn:@"age"] ;
NSLog(@"stu id = %d, name = %@, age = %d",stuID,strName,stuAge) ;
//根据索引值来取得字段内容
NSInteger stuID1 = [result intForColumnIndex:0] ;
//获取名字字段内容,根据索引值来取得字段内容
NSString* strName1 = [result stringForColumnIndex:1] ;
//获取年龄的字段内容,根据索引值来取得字段内容
NSInteger stuAge1 = [result intForColumnIndex:2] ;
NSLog(@"stuIndex id = %d, name = %@, age = %d",stuID,strName,stuAge) ;
}
}
}
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end