NSString+FFDBSQLStatement.m 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. //
  2. // NSString+FFDBSQLStatement.m
  3. // FFDB
  4. //
  5. // Created by Fidetro on 2017/7/23.
  6. // Copyright © 2017年 Fidetro. All rights reserved.
  7. //
  8. #import "NSString+FFDBSQLStatement.h"
  9. #import "NSString+FFDBExtern.h"
  10. #import "FFDataBaseModel+Custom.h"
  11. #import "FFDataBaseModel+Sqlite.h"
  12. @implementation NSString (FFDBSQLStatement)
  13. + (NSString *)stringWithSelectCountfromClasses:(NSArray <Class>*)dbClasses
  14. SQLStatementWithFormat:(NSString *)format
  15. {
  16. NSMutableString *sqlstatement = [NSMutableString string];
  17. [sqlstatement appendString:@"select count(*) from "];
  18. [sqlstatement appendString:[NSString stringWithTableNameOfClasses:dbClasses]];
  19. if ([format length] != 0)
  20. {
  21. [sqlstatement appendFormat:@" %@",format];
  22. }
  23. return [sqlstatement copy];
  24. }
  25. + (NSString *)stringWithSelectColumns:(NSArray <NSString *>*)columns
  26. fromClasses:(NSArray <Class>*)dbClasses
  27. SQLStatementWithFormat:(NSString *)format
  28. {
  29. NSMutableString *sqlstatement = [NSMutableString string];
  30. if (columns.count == 0)
  31. {
  32. [sqlstatement appendString:@"select * from "];
  33. }
  34. else
  35. {
  36. [sqlstatement appendFormat:@"select %@ from ",[NSString stringWithColumns:columns]];
  37. }
  38. [sqlstatement appendString:[NSString stringWithTableNameOfClasses:dbClasses]];
  39. if ([format length] != 0)
  40. {
  41. [sqlstatement appendFormat:@" %@",format];
  42. }
  43. return [sqlstatement copy];
  44. }
  45. + (NSString *)stringWithDeleteFromClass:(Class)dbClass
  46. SQLStatementWithFormat:(NSString *)format
  47. {
  48. NSMutableString *sqlstatement = [NSMutableString string];
  49. NSString *tableName = [dbClass tableName];
  50. [sqlstatement appendFormat:@"delete from `%@` ",tableName];
  51. if ([format length] != 0)
  52. {
  53. [sqlstatement appendString:format];
  54. }
  55. return [sqlstatement copy];
  56. }
  57. + (NSString *)stringWithInsertObject:(__kindof FFDataBaseModel *)dbModel
  58. columns:(NSArray <NSString *>*)columns
  59. {
  60. NSMutableString *sqlstatement = [NSMutableString string];
  61. NSString *tableName = [[dbModel class] tableName];
  62. if (columns.count == 0)
  63. {
  64. columns = [[dbModel class]columnsOfSelf];
  65. }
  66. NSString *columnsString = [NSString stringWithColumns:columns];
  67. [sqlstatement appendFormat:@"insert into `%@` ",tableName];
  68. [sqlstatement appendFormat:@"(%@)",columnsString];
  69. [sqlstatement appendFormat:@"values(%@)",[dbModel stringWithInsertValueOfColumns:columns]];
  70. return [sqlstatement copy];
  71. }
  72. + (NSString *)stringWithUpdateFromClass:(Class)dbClass
  73. SQLStatementWithFormat:(NSString *)format
  74. {
  75. NSMutableString *sqlstatement = [NSMutableString string];
  76. NSString *tableName = [dbClass tableName];
  77. [sqlstatement appendFormat:@"update `%@` %@",tableName,format];
  78. return [sqlstatement copy];
  79. }
  80. + (NSString *)stringWithUpdateObject:(__kindof FFDataBaseModel *)dbModel
  81. columns:(NSArray <NSString *>*)columns
  82. {
  83. NSMutableString *sqlstatement = [NSMutableString string];
  84. NSString *tableName = [[dbModel class] tableName];
  85. if (columns.count == 0)
  86. {
  87. columns = [[dbModel class]columnsOfSelf];
  88. }
  89. [sqlstatement appendFormat:@"update `%@` ",tableName];
  90. [sqlstatement appendFormat:@"set %@",[dbModel stringWithUpdateSetValueOfColumns:columns]];
  91. [sqlstatement appendString:[dbModel updateObjectSqlstatement]];
  92. return [sqlstatement copy];
  93. }
  94. + (NSString *)stringWithCreateTableFromClass:(Class)dbClass
  95. {
  96. NSString *tableKey = [NSString string];
  97. NSArray *propertyNames = [dbClass columnsOfSelf];
  98. NSString *tableName = [dbClass tableName];
  99. tableKey = [dbClass stringToColumnTypeWithColumns:propertyNames];
  100. // for (NSInteger index = 0; index < [propertyNames count]; index++)
  101. // {
  102. // NSString *propertyname = propertyNames[index];
  103. // NSString *columnType = [[dbClass columnsType][propertyname]length] == 0 ? @"text":[dbClass columnsType][propertyname];
  104. //
  105. // if (index == 0)
  106. // {
  107. // tableKey = [NSString stringWithFormat:@"%@%@ %@",tableKey,propertyname,columnType];
  108. // }
  109. // else
  110. // {
  111. // tableKey = [NSString stringWithFormat:@"%@,%@ %@",tableKey,propertyname,columnType];
  112. // }
  113. // }
  114. NSString *sqlstatement = [NSString stringWithFormat:@"create table if not exists `%@` (primaryID integer PRIMARY KEY AUTOINCREMENT,%@)",tableName,tableKey];
  115. return sqlstatement;
  116. }
  117. @end