UI之FMDataBase

本文介绍如何使用FMDB封装库操作SQLite数据库,包括创建表、插入数据、删除数据、更新数据及查询等基本操作,并通过具体代码实现展示了单例模式的应用。
**//DataBaseUtil.h文件**
------------------

/*使用FMDB(数据库)的步骤:1.导入libsqlite3.0.tbd依赖库
 2.导入FMDB文件
 */

/*
 数据库:数据库是以表的形式存储数据
 对数据库的操作 建表(create table) 增(insert) 删(delete) 改(update) 查(select)

 SQLite数据库字段约束条件
 NOT NULL -非空
 UNIQUE   -唯一
 PRIMARY KEY -主键
 FOREIGN KEY -外键
 CHECK       -条件检查,确保一列中的所有值满足一定的条件
 DEFAULT     -默认
 AUTOINCREATEMENT -自增型变量

 什么是单例对象?

 单例模式的要点有三个;一是某个类只能有一个实例;二是它必须自行创建这个实例;三是它必须自行向整个系统提供这个实例。


 */



#import <Foundation/Foundation.h>
#import "FMDatabase.h"
#import "Movie.h"
//movie对象有三个属性分别为:name,actor,country;

@interface DataBaseUtil : NSObject
//创建一个单例对象
+(DataBaseUtil *)shareDatabase;

//声明一系列对数据库操作的方法
//创建表的方法
-(BOOL)createTbale;
//增加数据的方法
-(BOOL)insertMovie:(Movie *)movie;
//删除数据
-(BOOL)deleteMovieWithName:(NSString *)name;
//更新数据
-(BOOL)updateMoviename:(NSString *)name newname:(NSString *)newName;
//查询
-(NSArray *)seleteMoviesTableWithName:(NSString *)name;

@end



**//DataBaseUtil.m文件**
------------------
#import "DataBaseUtil.h"
static DataBaseUtil *database = nil;
//怎么在.m写属性?
//利用延展添加私有属性
@interface DataBaseUtil ()
//db就是数据库
@property(nonatomic,strong)FMDatabase *db;
@end

@implementation DataBaseUtil
//产生一个单例对象
+(DataBaseUtil *)shareDatabase
{
    if (database == nil) {
        database = [[DataBaseUtil alloc] init];
    }
    return database;
}
//在初始化方法中完成文件和对象的对接
-(id)init
{
    self = [super init];
    if (self) {

        //拿document路径
        NSString *docpath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)lastObject];
        //创建movielist数据库文件
        NSString *dbPath = [docpath stringByAppendingPathComponent:@"movie.sqlite"];
        self.db = [FMDatabase databaseWithPath:dbPath];
    }
    return self;
}
//创表
-(BOOL)createTbale
{
    if ([_db open]) {
        //创建表的SQL语句
        NSString *table = [NSString stringWithFormat:@"create table if not exists movies (id integer primary key autoincrement,name text,actor text,country text)"];
        //执行语句
        BOOL b = [_db executeUpdate:table];
        if (b) {
            NSLog(@"建表成功");
        }
        [_db close];
        return b;

    }
    return NO;
}
//往表添加数据
-(BOOL)insertMovie:(Movie *)movie
{
    if ([_db open]) {
        NSString *insert = [NSString stringWithFormat:@"insert into movies (name,actor,country) values ('%@','%@','%@')",movie.name,movie.actor,movie.country];
        //执行语句
       BOOL bb = [_db executeUpdate:insert];
        if (bb) {
            NSLog(@"添加成功");
        }
        [_db close];
        return bb;
    }
    return NO;
}
//删除表里面的内容
-(BOOL)deleteMovieWithName:(NSString *)name
{
    if ([_db open]) {
        NSString *deleteName = [NSString stringWithFormat:@"delete from movies where name = '%@'",name];
       BOOL bbb = [_db executeUpdate:deleteName];
        if (bbb) {
            NSLog(@"删除成功");
        }
        [_db close];
        return bbb;
    }

    return NO;
}
//更新数据
-(BOOL)updateMoviename:(NSString *)name newname:(NSString *)newName
{
    if ([_db open]) {
        NSString *update = [NSString stringWithFormat:@"update movies set actor = '%@' where actor = '%@'",newName,name];
     BOOL b1 =    [_db executeUpdate:update];
        if (b1) {
            NSLog(@"更新成功");
        }
        [_db close];
        return b1;
    }
    return NO;

}
//查询
-(NSArray *)seleteMoviesTableWithName:(NSString *)name
{
    NSMutableArray *array = [NSMutableArray array];
    if ([_db open]) {
        //模糊查询关键字
        NSString *sql = [NSString stringWithFormat:@"select  * from movies where name like \"%%%@%%\"",name];
        //排序的关键字 order by

        FMResultSet *set = [_db executeQuery:sql];
        while ([set next]) {
            NSString *name = [set stringForColumn:@"name"];
            NSString *actor = [set stringForColumn:@"actor"];
            NSString *country = [set stringForColumn:@"country"];
            Movie *mo = [[Movie alloc] init];
            mo.name = name;
            mo.actor = actor;
            mo.country = country;
            [array addObject:mo];


        }
        [_db close];
        return array;


    }
    return array;
}



@end
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值