Skip to content

Commit e69494b

Browse files
committed
Merge pull request li6185377#52 from zhangao0086/master
增加了一个可以传递可变参数的方法
2 parents 44057bd + ce2a65e commit e69494b

File tree

2 files changed

+54
-19
lines changed

2 files changed

+54
-19
lines changed

LKDBHelper/Helper/LKDBHelper.h

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,15 @@
126126
*/
127127
- (NSMutableArray*)searchWithRAWSQL:(NSString*)sql toClass:(Class)modelClass;
128128

129+
/**
130+
* query sql, query finished result is an array(model instance collection)
131+
* you can use the "@t" replace Model TableName and replace all ? placeholders with the va_list
132+
* example:
133+
NSMutableArray* array = [[LKDBHelper getUsingLKDBHelper] searc:[ModelClass class] withSQL:@"select rowid from name_table where name = ?", @"Swift"];
134+
*
135+
*/
136+
-(NSMutableArray *)search:(Class)modelClass withSQL:(NSString *)sql,...;
137+
129138
/**
130139
columns may NSArray or NSString if query column count == 1 return single column string array
131140
other return models entity array

LKDBHelper/Helper/LKDBHelper.m

Lines changed: 45 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -942,29 +942,36 @@ - (NSMutableArray*)searchBase:(Class)modelClass columns:(id)columns where:(id)wh
942942
return [self searchBaseWithParams:params];
943943
}
944944

945+
- (NSString *)replaceTableNameIfNeeded:(NSString *)sql withModelClass:(Class)modelClass
946+
{
947+
// replace @t to model table name
948+
NSString* replaceString = [[modelClass getTableName] stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
949+
if ([sql hasSuffix:@" @t"]) {
950+
sql = [sql stringByAppendingString:@" "];
951+
}
952+
if ([sql componentsSeparatedByString:@" from "].count == 2 && [sql rangeOfString:@" join "].length == 0) {
953+
sql = [sql stringByReplacingOccurrencesOfString:@" from " withString:[NSString stringWithFormat:@",%@.rowid from ", replaceString]];
954+
}
955+
956+
sql = [sql stringByReplacingOccurrencesOfString:@" @t "
957+
withString:
958+
[NSString stringWithFormat:@" %@ ", replaceString]];
959+
sql = [sql stringByReplacingOccurrencesOfString:@" @t,"
960+
withString:
961+
[NSString stringWithFormat:@" %@,", replaceString]];
962+
sql = [sql stringByReplacingOccurrencesOfString:@",@t "
963+
withString:
964+
[NSString stringWithFormat:@",%@ ", replaceString]];
965+
966+
return sql;
967+
}
968+
945969
- (NSMutableArray*)searchWithSQL:(NSString*)sql toClass:(Class)modelClass
946970
{
947-
// replace @t to model table name
948-
NSString* replaceString = [[modelClass getTableName] stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
949-
if ([sql hasSuffix:@" @t"]) {
950-
sql = [sql stringByAppendingString:@" "];
951-
}
952-
if ([sql componentsSeparatedByString:@" from "].count == 2 && [sql rangeOfString:@" join "].length == 0) {
953-
sql = [sql stringByReplacingOccurrencesOfString:@" from " withString:[NSString stringWithFormat:@",%@.rowid from ", replaceString]];
954-
}
955-
956-
sql = [sql stringByReplacingOccurrencesOfString:@" @t "
957-
withString:
958-
[NSString stringWithFormat:@" %@ ", replaceString]];
959-
sql = [sql stringByReplacingOccurrencesOfString:@" @t,"
960-
withString:
961-
[NSString stringWithFormat:@" %@,", replaceString]];
962-
sql = [sql stringByReplacingOccurrencesOfString:@",@t "
963-
withString:
964-
[NSString stringWithFormat:@",%@ ", replaceString]];
965-
971+
sql = [self replaceTableNameIfNeeded:sql withModelClass:modelClass];
966972
return [self searchWithRAWSQL:sql toClass:modelClass];
967973
}
974+
968975
- (NSMutableArray*)searchWithRAWSQL:(NSString*)sql toClass:(Class)modelClass
969976
{
970977
__block NSMutableArray* results = nil;
@@ -976,6 +983,25 @@ - (NSMutableArray*)searchWithRAWSQL:(NSString*)sql toClass:(Class)modelClass
976983
return results;
977984
}
978985

986+
- (NSMutableArray*)search:(Class)modelClass withSQL:(NSString*)sql, ...
987+
{
988+
va_list args;
989+
va_start(args, sql);
990+
991+
sql = [self replaceTableNameIfNeeded:sql withModelClass:modelClass];
992+
993+
va_list *argsPoint = &args;
994+
__block NSMutableArray *results = nil;
995+
[self executeDB:^(FMDatabase *db) {
996+
FMResultSet *set = [db executeQuery:sql withVAList:*argsPoint];
997+
results = [self executeResult:set Class:modelClass tableName:nil];
998+
[set close];
999+
}];
1000+
1001+
va_end(args);
1002+
return results;
1003+
}
1004+
9791005
- (void)sqlString:(NSMutableString*)sql groupBy:(NSString*)groupBy orderBy:(NSString*)orderby offset:(NSInteger)offset count:(NSInteger)count
9801006
{
9811007
if ([LKDBUtils checkStringIsEmpty:groupBy] == NO) {

0 commit comments

Comments
 (0)