基于SQLite3轻量级封装,一行代码实现增删改查

 

D61084AE-36DE-4516-802E-1E4619B637DF.png

 

最近几天一直在看关于数据库的资料,写了各类sql语句,已经在崩溃的边缘,为了下次再也不写重复的语句,更为了偷懒...花了几天时间基于SQLite3封装了一下,经常使用的功能一行代码就能够实现,内部使用runtime获取属性列表,再利用KVC完成赋值,很少说,直接上代码,git

 

下面是提供的接口github

1sql

2数据库

3spa

4.net

5code

6orm

7对象

8接口

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

/// 获取全局数据库单例

+ (instancetype)sharedManager;

/**

 *  打开数据库

 *

 *  @return 成功/失败

 */

- (BOOL)openDatabase;

/**

 *  根据类名建立表格,默认主键为t_default_id

 *

 *  @param className  类名t_default_id

 */

- (BOOL)creatTableWithClassName:(id)className;

 

#pragma mark -

#pragma mark - =============== 插入数据 ===============

/**

 *  插入数据

 *  该方法会将模型对象插入到对象类型所对应的表格中 

 *  @param object 模型对象

 */

- (void)insertDataFromObject:(id)object;

 

#pragma mark -

#pragma mark - =============== 查询数据 ===============

/**

 *  获取表格中全部数据,

 */

- (NSArray *)selecteDataWithClass:(id)className;

 

/**

 *  获取表格中数据行数

 */

- (NSInteger)getTotalRowsFormClass:(id)className;

 

/**

 *  获取表格中第n条数据

 */

- (id)selecteFormClass:(id)className index:(NSInteger)index;

 

/**

 *  单条件查询

 *

 *  @param obj   类名

 *  @param key   属性名 例 @"name"

 *  @param opt   符号 例 @"=" > < 

 *  @param value 值 例 @"zhangsan"

 *

 *  @return 查询结果

 */

- (NSArray *)selectObject:(Class)className key:(id)key operate:(NSString *)operate value:(id)value;

 

/**

 *  自定义语句查询

 *

 *  @param sqlString 自定义的sql语句

 *  @param className 类名

 *

 *  @return 查询结果

 */

- (NSArray *)selecteDataWithSqlString:(NSString *)sqlString class:(id)className;

 

/**

 *  数据库模糊查询(单条件)

 *

 *  @param obj          类

 *  @param propertyName 属性名也是字段名

 *  @param type         模糊查询的位置类型

 *  @param content      查询的字符串

 *

 *  @return 查询内容

 */

- (NSArray *)selectObject:(Class)className propertyName:(NSString *)propertyName type:(GKDatabaseSelectLocation)type content:(NSString *)content;

 

#pragma mark -

#pragma mark - =============== 更新数据 ===============

/**

 *  数据更新

 *

 *  @param obj             类名

 *  @param oldValues   要更新的内容 例 @【@"name=lisi"】

 *  @param conditionType   条件类型 例 OR 或者 AND

 *  @param newValues 更新条件 例 @【@"id=5",@"name=zhangsan"】

 */

- (BOOL) updateObject:(Class)className oldValues:(NSArray *)oldValues conditionType:(QueryType)conditionType newValues:(NSArray *)newValues;

 

#pragma mark -

#pragma mark - =============== 删除数据 ===============

/**

 *  删除数据

 *

 *  @param className 类名

 *  @param string    删除语句,字符串须要加上单引号 例@"name = 'Chris'" / @"id = 1234" / @"integer > 1234";

 *

 *  @return 删除结果

 */

- (BOOL)deleteObject:(Class)className withString:(NSString *)string;

 

/**

 *  清空数据库某表格的内容

 *

 *  @param className 类名

 *

 *  @return 清空结果

 */

- (BOOL)clearTableWithName:(id)className;

 

/**

 *  删除数据库表格

 *

 *  @param className 类名

 *

 *  @return 删除结果

 */

- (BOOL)deleteTableWithTableName:(id)className;

具体使用请看Demo:https://github.com/ChrisCaixx/GKDatabase

源码中给出了详细的注释,若有须要请移步:https://github.com/ChrisCaixx/GKDatabase 如以为好用,

相关文章
相关标签/搜索