美文网首页iOS
对Sqlite数据库一些操作

对Sqlite数据库一些操作

作者: kivinSun | 来源:发表于2017-03-11 23:41 被阅读17次

一.根据表名删除数据表

- (BOOL)clearDB
{
    if (self.dataBase == nil || !self.dataBase.open)
    {
        DLog(@"--db打开错误--");
        return NO;
    }
    //1.查询所有表名称
    NSString *sql = [NSString stringWithFormat:@"SELECT name FROM sqlite_master WHERE type='table' order by name"];
    
    FMResultSet *rs  = [self.dataBase executeQuery:sql];
    NSMutableArray *tableNames = [NSMutableArray array];
    
    while (rs &&[rs next])
    {
        NSString *tableName =[rs stringForColumn:@"name"];
        
        [tableNames addObject:tableName];
    }
    //2.过滤不删除的表名
    NSString * saveTableName1 = [NSString stringWithFormat:@"LoginData"];
//    NSString * saveTableName2 = [NSString stringWithFormat:@"PushMessage"];
//    NSString * saveTableName3 = [NSString stringWithFormat:@"Notice"];
//    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF != %@ && SELF != %@ && SELF != %@",saveTableName1,saveTableName2,saveTableName3];
     NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF != %@ ",saveTableName1];
    NSArray *delNames = [tableNames  filteredArrayUsingPredicate:predicate];
   __block BOOL ret;
    [delNames enumerateObjectsUsingBlock:^(id  _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
        if (obj && [obj isKindOfClass:[NSString class]]) {
            NSString *delSqlStr = [NSString stringWithFormat:@"DROP TABLE IF EXISTS %@;",obj];
            DLog(@"-delSqlStr--%@",delSqlStr);
            ret =  [self.dataBase executeUpdate:delSqlStr];
            [rs close];
        }
    }];
    return ret;
}

二,数据库添加新字段

#pragma mark 存储新的字段 updatetime;
+(void)addNewColumn
{
    XKDataBase *dbHandler = [XKDataBase shared];
    if (![dbHandler openDB]) {
        return ;
    }

    if (![dbHandler.dataBase tableExists:@"Notice"]) {
        DLog(@"Notice表不存在");
        return ;
    }
    NSMutableArray *tmpArray = [NSMutableArray array];
    FMResultSet *rs = [dbHandler.dataBase executeQuery:@"pragma table_info([Notice]) "];
    while ([rs next]) {
        NSString *culmnName = [rs stringForColumnIndex:1];

        [tmpArray addObject:culmnName];
    }
    [rs close];
    if (![tmpArray containsObject:@"updatetime"]) {
        NSString *sql = [NSString stringWithFormat:@"ALTER TABLE Notice ADD COLUMN updatetime int"];
        BOOL ret =  [dbHandler.dataBase executeUpdate:sql];

        DLog(@"插入updatetime  ret = %d",ret);
    }

}

三.检查表中 是否含有某个字段

+(BOOL)checkTable:(NSString *)tableName comtainColumn:(NSString*)columnName
{
    XKDataBase *dbHandler = [XKDataBase shared];
    
    if (![dbHandler openDB]) {
        DLog(@"数据库未打开");
        return YES;
    }
    if (![dbHandler.dataBase tableExists:tableName]) {
        DLog(@"checkUpdatetimeColumn %@表不存在",tableName);
        return YES;
    }
    NSString *sql = [NSString stringWithFormat:@"pragma table_info([%@])",tableName];
    NSMutableArray *tmpArray = [NSMutableArray array];
    FMResultSet *rs = [dbHandler.dataBase executeQuery:sql];
    while ([rs next]) {
        NSString *culmnName = [rs stringForColumnIndex:1];
        
        [tmpArray addObject:culmnName];
    }
    [rs close];
    //包含字段
    if ([tmpArray containsObject:columnName]) {
        return YES;
    }else
    {
        return NO;
    }
}```

相关文章

  • Sqlite 使用笔记

    1. 数据库基本操作封装 sqlite 数据操作 语句类型 sqlite 数据库的简单实用- 导入sqlite3数...

  • Android数据库ORM框架:GreenDAO使用简介

    Android最常用的数据库是SQLite,通常使用SQLite进行CRUD操作需要记住一些常用的SQL语句,这不...

  • C#封装对SQL Server和SQLite数据库的操作类

    应用程序配置文件存放数据库连接字符串的信息 对SQL Server数据库操作方法的封装 对SQLite数据库操作方...

  • 对Sqlite数据库一些操作

    一.根据表名删除数据表 二,数据库添加新字段 三.检查表中 是否含有某个字段

  • android笔记6

    本章学习目标: 了解SQLite数据库的特点和体系结构 掌握SQLite数据库的建立和操作方法 SQlite介绍 ...

  • SQLite封装

    1. 创建 XSqliteTool 类,对 SQLite 基本操作进行封装 打开数据库 关闭数据库 执行语句 查询...

  • 【2020-06-16】Python操作sqlite 报错:sq

    python操作sqlite数据库时出现报错信息: sqlite3.OperationalError: datab...

  • Android - base - SQLite

    Android 自带的SQLite数据库 大纲 SqLite 数据类型 核心类 创建和升级数据库 CRUD操作 #...

  • greenDAO框架介绍

    一:GreenDAO介绍 它是一个为了帮助Android开发者操作SqLite数据库的开源项目。SQLite数据库...

  • android 数据库的操作

    一.Sqlite在安卓中应用广泛,主要存储一些数据,我们可以对他进行增删查改等操作。 什么是Sqlite数据库?这...

网友评论

    本文标题:对Sqlite数据库一些操作

    本文链接:https://www.haomeiwen.com/subject/zmnzgttx.html