数据库SQL的操作指令

数据库SQL的操作指令

这里主要讲第三方库FMDB的使用,因为OC没有和SQL有很好的耦合,除非是使用CoreData

FMDB

导入头文件

import < FMDB.h >

FMDB是讲SQLite API进行了封装的库

优点是以OC方式封装,使用起来更加方便

缺点是只能在iOS开发的时候使用,在跨平台操作上存在局限性

FMDataBase:一个FMDataBase对象就代表一个单独的SQLite数据库,用来执行SQLite语句

FMDB的操作

在使用数据库的时候,一般我们只需要进行增删改查的操作

这里有4个方法

//打开数据库
+(FMDatabase *)openDB;

//查找数据
+(NSArray *)find;

//插入数据
+(BOOL)insertModel:(Model *)model;

//删除数据
+(BOOL)deleteModel:(Model *)model;
打开或创建数据库

1.获取数据库路径

NSString *doc = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
NSString *dbPath = [doc stringByAppendingPathComponent:@"user.sqlite"];

2.获取数据库

FMDatabase *db = [FMDatabase databaseWithPath:dbPath];

在和数据库交互之前,数据库必须是打开的如果权限不足或者资源不足,则无法打开和创建数据库

if ([db open]) {

    //创建表
    NSString *sqlCreateTable = [NSString stringWithFormat:@"CREATE TABLE IF NOT EXISTS '%@' ('%@' TEXT,'%@' TEXT,'%@' TEXT,'%@' TEXT,'%@' TEXT,'%@' TEXT,'%@' TEXT,'%@' TEXT,'%@' TEXT,'%@' TEXT,'%@' TEXT,'%@' TEXT,'%@' TEXT,'%@' TEXT)",MyCollection,Col1,Col2,Col3,Col4,Col5,Col6,Col7,Col8,Col9,Col10,Col11,Col12,Col13,Col14];

    BOOL flag =  [db executeUpdate:sqlCreateTable];
    if (flag) {
        NSLog(@"创建表成功");
    }
    else {
        NSLog(@"创建表失败");
    }
}

return db;

这里是根据相应格式进行数据库的创建,MyCollection以及Col1等都是作了宏处理的,有多少个属性就做多少个Col1。

3.查找数据库

+(NSArray *)find
{
NSMutableArray *mArray = [NSMutableArray array];
FMDatabase *db = [self openDB];
if ([db open]) {

    NSString *sql = [NSString stringWithFormat:@"SELECT * FROM %@",MyCollection];
    //执行查询语句,查询整个表
    FMResultSet *rs = [db executeQuery:sql];    //查询的时候才用executeQuery方法,否则用executeUpdate

    while ([rs next]) {

        Model *model = [[Model alloc]init];
        model.comment_num = [NSNumber numberWithInteger:[[rs stringForColumn:Col1] integerValue]];
        model.current_price = [NSNumber numberWithInteger:[[rs stringForColumn:Col2] integerValue]];
        model.deal_id = [NSNumber numberWithInteger:[[rs stringForColumn:Col3] integerValue]];
        model.deal_murl = [rs stringForColumn:Col4];
        model.deal_url = [rs stringForColumn:Col5];
        model.descriptionNew = [rs stringForColumn:Col6];
        model.image = [rs stringForColumn:Col7];
        model.market_price = [NSNumber numberWithInteger:[[rs stringForColumn:Col8] integerValue]];
        model.min_title = [rs stringForColumn:Col9];
        model.promotion_price = [NSNumber numberWithInteger:[[rs stringForColumn:Col10] integerValue]];
        model.sale_num = [NSNumber numberWithInteger:[[rs stringForColumn:Col11] integerValue]];
        model.score = [NSNumber numberWithInteger:[[rs stringForColumn:Col12] integerValue]];
        model.tiny_image = [rs stringForColumn:Col13];
        model.title = [rs stringForColumn:Col14];

        [mArray addObject:model];
    }
}

//关闭数据库
[db close];

return mArray;
}

4.插入数据库

//插入数据库
+(BOOL)insertModel:(Model *)model
{
BOOL flag = NO;
FMDatabase *db = [self openDB];


if ([db open]) {

    NSString *insertSql = [NSString stringWithFormat:@"INSERT INTO '%@' ('%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@') VALUES ('%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@')",MyCollection,Col1,Col2,Col3,Col4,Col5,Col6,Col7,Col8,Col9,Col10,Col11,Col12,Col13,Col14,model.comment_num,model.current_price,model.deal_id,model.deal_murl,model.deal_url,model.descriptionNew,model.image,model.market_price,model.min_title,model.promotion_price,model.sale_num,model.score,model.tiny_image,model.title];

    flag = [db executeUpdate:insertSql];
    if (flag) {
        NSLog(@"数据插入成功");
    }
    else {
        NSLog(@"数据插入失败");
    }
}

return flag;
}

5.删除数据库

+(BOOL)deleteModel:(Model *)model
{
BOOL flag = NO;

FMDatabase *db = [self openDB];

if ([db open]) {
    NSString *deleteSql = [NSString stringWithFormat:@"delete  from %@ where %@ = %@",MyCollection,Col3,model.deal_id];//delete * from %@ where %@ = %@中的*号为删除表,要是单独删除元素就要去掉
    flag =  [db executeUpdate:deleteSql];
    if (flag) {
        NSLog(@"删除成功");
    }
    else {
        NSLog(@"删除失败");
    }
}

return flag;
}   

需要注意的是,在进行数据库的创建的时候,应为数据库本质是C语言,不支持数组和字典的属性,当出现数组和字典作为属性的时候,需要另外创建数据库

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值