Skip to content
simplify sqlite database CRUD operation, based on fmdb.
Branch: master
Clone or download
Latest commit 9599708 Apr 12, 2016
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
DBDemo fixed pod spec error Apr 12, 2016
docs
testDB.xcworkspace
.gitignore 忽略.ds_store Apr 3, 2015
LICENSE Initial commit Oct 8, 2014
README.md

README.md

GXDatabaseUtils

  • 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.

You can’t perform that action at this time.