FFDataBaseModel+Sqlite.m 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. //
  2. // FFDataBaseModel+Sqlite.m
  3. // FFDB
  4. //
  5. // Created by Fidetro on 2017/5/11.
  6. // Copyright © 2017年 Fidetro. All rights reserved.
  7. //
  8. // https://github.com/Fidetro/FFDB
  9. #import "FFDataBaseModel+Sqlite.h"
  10. #import "FFDataBaseModel+Custom.h"
  11. #import "NSObject+FIDProperty.h"
  12. @implementation FFDataBaseModel (Sqlite)
  13. - (NSString *)deleteObjectSqlstatement
  14. {
  15. return [NSString stringWithFormat:@"where primaryID = '%@'",self.primaryID];
  16. }
  17. - (NSString *)updateObjectSqlstatement
  18. {
  19. return [NSString stringWithFormat:@"where primaryID = '%@'",self.primaryID];
  20. }
  21. - (NSString *)stringWithInsertValueOfColumns:(NSArray <NSString *>*)columns
  22. {
  23. NSMutableString *values = [NSMutableString string];
  24. for (NSInteger index = 0; index < columns.count; index++)
  25. {
  26. NSString *column = columns[index];
  27. if (index == 0)
  28. {
  29. [values appendFormat:@"'%@'",[self getIvarWithName:column]];
  30. }
  31. else
  32. {
  33. [values appendFormat:@",'%@'",[self getIvarWithName:column]];
  34. }
  35. }
  36. return values;
  37. }
  38. - (NSString *)stringWithUpdateSetValueOfColumns:(NSArray <NSString *>*)columns
  39. {
  40. NSMutableString *values = [NSMutableString string];
  41. for (NSInteger index = 0; index < columns.count; index++)
  42. {
  43. NSString *column = columns[index];
  44. if (index == 0)
  45. {
  46. [values appendFormat:@"%@ = '%@'",column,[self getIvarWithName:column]];
  47. }
  48. else
  49. {
  50. [values appendFormat:@",%@ = '%@'",column,[self getIvarWithName:column]];
  51. }
  52. }
  53. return values;
  54. }
  55. - (NSString *)stringWithWhereValueOfColumns:(NSArray <NSString *>*)columns
  56. {
  57. NSMutableString *values = [NSMutableString string];
  58. for (NSInteger index = 0; index < columns.count; index++)
  59. {
  60. NSString *column = columns[index];
  61. if (index == 0)
  62. {
  63. [values appendFormat:@"%@ = '%@'",column,[self getIvarWithName:column]];
  64. }
  65. else
  66. {
  67. [values appendFormat:@",%@ = '%@'",column,[self getIvarWithName:column]];
  68. }
  69. }
  70. return values;
  71. }
  72. + (NSString *)stringToColumnTypeWithColumns:(NSArray <NSString *>*)columns
  73. {
  74. NSMutableString *columnsType = [NSMutableString string];
  75. for (NSInteger index = 0; index < columns.count; index++)
  76. {
  77. NSString *propertyname = columns[index];
  78. NSString *columnType = [[self columnsType][propertyname]length] == 0 ? @"text":[self columnsType][propertyname];
  79. if (index == 0)
  80. {
  81. [columnsType appendFormat:@"%@ %@",propertyname,columnType];
  82. }
  83. else
  84. {
  85. [columnsType appendFormat:@",%@ %@",propertyname,columnType];
  86. }
  87. }
  88. return columnsType;
  89. }
  90. - (id)getIvarWithName:(NSString *)propertyname
  91. {
  92. id obj = [self sendGetMethodWithPropertyName:propertyname];
  93. if ([obj respondsToSelector:@selector(length)])
  94. {
  95. if ([obj length] == 0)
  96. {
  97. obj = @"";
  98. }
  99. }
  100. else if (obj == nil)
  101. {
  102. obj = @"";
  103. };
  104. if ([obj isKindOfClass:[NSString class]])
  105. {
  106. NSString *str = obj;
  107. [str stringByReplacingOccurrencesOfString:@"/" withString:@"//"];
  108. [str stringByReplacingOccurrencesOfString:@"'" withString:@"''"];
  109. [str stringByReplacingOccurrencesOfString:@"[" withString:@"/["];
  110. [str stringByReplacingOccurrencesOfString:@"]" withString:@"/]"];
  111. [str stringByReplacingOccurrencesOfString:@"%" withString:@"/%"];
  112. [str stringByReplacingOccurrencesOfString:@"&" withString:@"/&"];
  113. [str stringByReplacingOccurrencesOfString:@"_" withString:@"/_"];
  114. [str stringByReplacingOccurrencesOfString:@"(" withString:@"/("];
  115. [str stringByReplacingOccurrencesOfString:@")" withString:@"/)"];
  116. }
  117. return obj;
  118. }
  119. @end