Latest 1.0
Homepage https://github.com/Gerry1218/GXDatabaseUtils
License BSD
Platforms osx , ios , tvos , watchos
Dependencies FMDB
Authors
  • simplify sqlite database CRUD operation.
  • Support ARC.
  • Support ios8 and before.

Screen shot

How To Get Started

  • Copy file under src and catagory directory to your project
  • Download fmdb relevant file
  • Add libsqlite3.dylib to project

Support data types

  • BOOL
  • unsigned int
  • NSInteger
  • long long
  • CGFloat
  • double
  • NSString
  • BOOL for ios8
  • Enum for ios8

Support iOS version

iOS5 later

Relationship class Member and column name

RULE: column name is member name of class.

For example:

// class
@interface GXBaseMessage : NSObject {

    NSString *address;
}

@property (nonatomic, assign) NSInteger count;
@property (nonatomic, strong) NSString *name;
@property (nonatomic, strong) NSMutableArray *datas;
@end
member name column name
address address
count _count
name _name
datas

Dependencies

  • fmdb needed
  • NSObject subclass

Architecture

  • <catagory>

    • NSObject+serializable
  • <src>
    • GXDatabaseManager
    • GXSQLStatementManager
    • GXCache

Usage

CRUD operation

  • C-Create
  • R-Retrieve
  • U-Update
  • D-Delete

Create

NSString *dbPath = [NSHomeDirectory() stringByAppendingPathComponent:@"testDB.sqlite"];
BOOL res = [GXDatabaseManager databaseWithPath:dbPath];
res = [GXDatabaseManager createTable:@"t_message" withClass:[GXMessage class] withPrimaryKey:@"_msgId"];

Retrieve

NSString *dbPath = [[NSBundle mainBundle] pathForResource:@"db" ofType:@"sqlite"];
BOOL res = [GXDatabaseManager databaseWithPath:dbPath];
if (!res) {
    NSLog(@"ERROR...");
}

NSString *w1 = kWhereString(@"_sessionUserid", @"=");
NSString *w2 = kWhereString(@"_msgId", @"=");
NSString *w = kWhereCombination(w1, @"AND", w2);

[GXDatabaseManager selectObjects:[GXMessageDBEntity class]
                       fromTable:@"t_message_chat"
                           where:w
                      withParams:@[@"1525851662", @"615734ef-2db1-427a-9505-b49ec6a8628c"]
                         orderBy:@"_msgTime"
                    withSortType:@"DESC"
                       withRange:NSMakeRange(0, 5)];

Update

// replace into
NSString *dbPath = [NSHomeDirectory() stringByAppendingPathComponent:@"testDB.sqlite"];
BOOL res = [GXDatabaseManager databaseWithPath:dbPath];

// create table
res = [GXDatabaseManager createTable:@"t_message" withClass:[GXMessage class] withPrimaryKey:@"_msgId"];

[GXDatabaseManager replaceInto:@"t_message" withObject:msg];
// update
NSString *dbPath = [NSHomeDirectory() stringByAppendingPathComponent:@"testDB.sqlite"];
BOOL res = [GXDatabaseManager databaseWithPath:dbPath];

if (!res) NSLog(@"ERROR");

NSString *w = kWhereString(@"_msgId", @"=");
[GXDatabaseManager updateTable:@"t_message"
                           set:@[@"_fontName"]
                         where:w
                    withParams:@[@"黑体", @"1ccaf308-8bb0-1e44-2f0b-98f308d03d57"]];

Delete

NSString *dbPath = [[NSBundle mainBundle] pathForResource:@"db" ofType:@"sqlite"];
BOOL res = [GXDatabaseManager databaseWithPath:dbPath];
if (!res) NSLog(@"ERROR...");

[GXDatabaseManager deleteTable:@"t_message_chat" where:@"_msgId=?" withParams:@[@"1ccaf308-8bb0-1e44-2f0b-98f308d03d57"]];

License

GXDatabaseUtils is available under the MIT license. See the LICENSE file for more info.

Latest podspec

{
    "name": "GXDatabaseUtils",
    "version": "1.0",
    "summary": "simplify sqlite database CRUD operation.",
    "description": "simplify sqlite database CRUD operation.nby gerry",
    "homepage": "https://github.com/Gerry1218/GXDatabaseUtils",
    "license": "BSD",
    "authors": {
        "Gerry1218": "[email protected]"
    },
    "source": {
        "git": "https://github.com/Gerry1218/GXDatabaseUtils.git",
        "tag": "1.0"
    },
    "source_files": "DBDemo/Classes/*",
    "libraries": "sqlite3",
    "dependencies": {
        "FMDB": [
            "~> 2.6.2"
        ]
    },
    "platforms": {
        "osx": null,
        "ios": null,
        "tvos": null,
        "watchos": null
    }
}

Pin It on Pinterest

Share This