关于SQLite的一些基本操作

前端之家收集整理的这篇文章主要介绍了关于SQLite的一些基本操作前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

这里写了一个单例处理基本的数据库操作,包含查询数据库表名、查询表字段名、查询表数据、开关数据库等操作

FMsqliteManager.h 文件

#import <Foundation/Foundation.h>@H_502_8@@H_502_8@
#import <sqlite3.h>@H_502_8@@H_502_8@

@interface@H_502_8@ FMsqliteManager@H_502_8@ : NSObject@H_502_8@{@H_502_8@
    sqlite3* db;
}

+ (FMsqliteManager *)sharedManager;

- (BOOL@H_502_8@) opensqliteDBWithPath:(NSString@H_502_8@ *) filePath;
- (void@H_502_8@) closesqliteDB;

- (NSArray@H_502_8@ *) queryTableFromDB;
- (NSArray@H_502_8@ *) queryWithsql:(NSString@H_502_8@ *) sqlStr;
- (NSArray@H_502_8@ *) queryPragmaFromTable:(NSString@H_502_8@ *) table;

@end@H_502_8@

FMsqliteManager.m 文件

#import "FMsqliteManager.h"@H_502_8@@H_502_8@

@implementation@H_502_8@ FMsqliteManager@H_502_8@@H_502_8@

+ (FMsqliteManager *)sharedManager
{
    static@H_502_8@ FMsqliteManager *sharedsqliteManagerInstance = nil@H_502_8@;
    static@H_502_8@ dispatch_once_t@H_502_8@ predicate;
    dispatch_once@H_502_8@(&predicate,^{
        sharedsqliteManagerInstance = [[self@H_502_8@ alloc] init];
    });
    return@H_502_8@ sharedsqliteManagerInstance;
}

- (BOOL@H_502_8@) opensqliteDBWithPath:(NSString@H_502_8@ *) filePath {

    if@H_502_8@ (sqlite3_open([filePath UTF8String],&db)==sqlITE_OK) {
        return@H_502_8@ YES@H_502_8@;
    }

    return@H_502_8@ NO@H_502_8@;
}

- (void@H_502_8@) closesqliteDB {
    sqlite3_close(db);
}

// 查询数据库所有表名@H_502_8@
- (NSArray@H_502_8@ *) queryTableFromDB {

    sqlite3_stmt *statement;

    NSString@H_502_8@* sqlStr = [NSString@H_502_8@ stringWithFormat:@"select * from sqlite_master where type='table' order by name"@H_502_8@];
    const@H_502_8@ char@H_502_8@* sql = [sqlStr UTF8String];
    if@H_502_8@ (sqlite3_prepare_v2(db,sql,-1@H_502_8@,&statement,nil@H_502_8@)==sqlITE_OK) {
        NSLog@H_502_8@(@"select ok."@H_502_8@);
    }

    NSMutableArray@H_502_8@* results = [NSMutableArray@H_502_8@ array];
    while@H_502_8@ (sqlite3_step(statement)==sqlITE_ROW) {
        int@H_502_8@ _id@H_502_8@=sqlite3_column_int(statement,0@H_502_8@);
        char@H_502_8@ *name=(char@H_502_8@ *)sqlite3_column_text(statement,1@H_502_8@);
        NSLog@H_502_8@(@"row>>id %i,name %s"@H_502_8@,_id@H_502_8@,name);
        [results addObject:[NSString@H_502_8@ stringWithCString:name encoding:NSUTF8StringEncoding]];
    }

    sqlite3_finalize(statement);

    return@H_502_8@ results;
}

// 查询表所有属性字段名@H_502_8@
- (NSArray@H_502_8@ *) queryPragmaFromTable:(NSString@H_502_8@ *) table {
    sqlite3_stmt *statement;

    NSString@H_502_8@* sqlStr = [NSString@H_502_8@ stringWithFormat:@"PRAGMA table_info(%@)"@H_502_8@,table];
    const@H_502_8@ char@H_502_8@* sql = [sqlStr UTF8String];
    if@H_502_8@ (sqlite3_prepare_v2(db,nil@H_502_8@)==sqlITE_OK) {
        NSLog@H_502_8@(@"select ok."@H_502_8@);
    }

    NSMutableArray@H_502_8@* results = [NSMutableArray@H_502_8@ array];
    while@H_502_8@ (sqlite3_step(statement)==sqlITE_ROW) {

        char@H_502_8@ *nameData = (char@H_502_8@ *)sqlite3_column_text(statement,1@H_502_8@);
        NSLog@H_502_8@(@"columnName:%s"@H_502_8@,nameData);

        [results addObject:[NSString@H_502_8@ stringWithCString:nameData encoding:NSUTF8StringEncoding]];
    }

    sqlite3_finalize(statement);

    return@H_502_8@ results;
}

// 查询表数据@H_502_8@
- (NSArray@H_502_8@ *) queryWithsql:(NSString@H_502_8@ *) sqlStr {

    sqlite3_stmt *statement;

    const@H_502_8@ char@H_502_8@* sql = [sqlStr UTF8String];
    if@H_502_8@ (sqlite3_prepare_v2(db,nil@H_502_8@)==sqlITE_OK) {
        NSLog@H_502_8@(@"select ok."@H_502_8@);
    }

    NSMutableArray@H_502_8@* results = [NSMutableArray@H_502_8@ array];
    while@H_502_8@ (sqlite3_step(statement)==sqlITE_ROW) {

        int@H_502_8@ count = sqlite3_column_count(statement);
        NSMutableDictionary@H_502_8@* info = [NSMutableDictionary@H_502_8@ dictionary];
        for@H_502_8@ (int@H_502_8@ i = 0@H_502_8@; i < count; i ++) {
            char@H_502_8@ *result =(char@H_502_8@ *)sqlite3_column_text(statement,i);
            NSString@H_502_8@* value = nil@H_502_8@;
            if@H_502_8@ (result != NULL@H_502_8@) {
                value = [NSString@H_502_8@ stringWithCString:result encoding:NSUTF8StringEncoding];
            }

            const@H_502_8@ char@H_502_8@ *columnName = sqlite3_column_name(statement,i);
            NSString@H_502_8@* key = [NSString@H_502_8@ stringWithUTF8String:columnName];

            if@H_502_8@ (value == nil@H_502_8@) {
                value = @""@H_502_8@;
            }

            [info setObject:value forKey:key];
        }

        [results addObject:info];
    }

    sqlite3_finalize(statement);

    return@H_502_8@ results;
}

@end@H_502_8@

猜你在找的Sqlite相关文章