1.拼接字段
#pragma mark - 拼接sql语句
-(NSString *)sql_keys:(NSArray *)attributes{
if (attributes.count <= 0) {
return nil;
}
NSMutableString *keys = [NSMutableString string];
int sum = 0;
[keys appendString:@"("];
for (NSString *key in attributes) {
sum += 1;
if (sum < attributes.count) {
[keys appendFormat:@"%@,",key];
}else{
[keys appendFormat:@"%@",key];
}
}
[keys appendString:@")"];
return keys;
}
2.拼接占位符
-(NSString *)sql_values:(NSArray *)attributes{
if (attributes.count <= 0) {
return nil;
}
NSMutableString *values = [NSMutableString string];
[values appendString:@"("];
for (int i = 0; i < attributes.count; i++) {
if (i < attributes.count-1) {
[values appendFormat:@"?,"];
}else{
[values appendFormat:@"?"];
}
}
[values appendString:@")"];
return values;
}
3.拼接sql
-(NSString *)sqls:(NSArray *)attributes{
if (attributes.count <= 0) {
return nil;
}
NSMutableString *sql = [NSMutableString string];
NSString *keys = [self sql_keys:attributes];
NSString *values = [self sql_values:attributes];
[sql appendString:keys];
[sql appendString:@" values "];
[sql appendString:values];
NSLog(@"sql ============== %@",sql);
return sql;
}
4.全语句拼接
-(NSString *)insertTable:(NSString *)tableName attributes:(NSArray *)attributes{
NSString *message = [NSString stringWithFormat:@"%@ %@ 表名不能为空",NSStringFromClass([self class]),NSStringFromSelector(_cmd)];
NSAssert(tableName, message);
if (!tableName || tableName.length <= 0) {
return nil;
}
if (!attributes || attributes.count <= 0) {
return nil;
}
NSString *sql = [NSString stringWithFormat:@"INSERT OR REPLACE INTO %@ %@",tableName,[self sqls:attributes]];
return sql;
}
5.来吧展示
NSArray *attributes = @[@"uid",@"age",@"name",@"avatar",@"gender"];
NSString *sql = [self insertTable:tb_base_users attributes:attributes];
sql ===== INSERT OR REPLACE INTO (uid, age, name, avatar,gender) values (?,?,?,?,?)
网友评论