文档章节

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

秦无炎
 秦无炎
发布于 2016/07/21 11:36
字数 718
阅读 4
收藏 1
点赞 0
评论 0
 

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

 

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

 

下面是提供的接口

1

2

3

4

5

6

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 如觉得好用,

本文转载自:

共有 人打赏支持
秦无炎
粉丝 4
博文 120
码字总数 4984
作品 0
朝阳
程序员
Fly的狐狸/jmoney

财务管理jfinal+beetl 本网站后台基于Jfinal开发,前台模板使用beetl,数据库为Mysql。 演示地址:http://www.jflyfox.com/jmoney 平台部署说明 下载jmoney项目:配置数据库文件/jmoney/src...

Fly的狐狸
2014/06/05
0
0
金钱管理软件 jfinal money 4.0 更简单了

更新说明: 由于许多人下载代码后,会反映CRUD封装可读性太差,这次对前台进行了全面重构。 把CRUD封装改为代码自动生成,这样对简单的增删改查仍然可以通过配置,而不写任何前台代码,并且项...

Fly的狐狸
2015/01/08
4.8K
35
手撸一个数据库框架 part2 - 增删改查

在上一篇目中,讲解了如何自动建表,代码. 本期来实现增删改查,这里现实最简单的增删改查,主要讲解实现思想,复杂的会在后续文章中讲解。 准备工作 1.首先在BaseDao init 方法,在建表时,...

JakePrim
03/24
0
0
iOS开发之FMDB的是本使用

FMDB是将sqlite3的语法封装成OC的语法 基于sqlite3的 使用的步骤: 1.创建打开一个数据库 2.向数据库里添加一个表 3.数据的增删改查 首先这里要使用一个第三方库fmdb,导入这个之后,操作如下...

鹿微微鹿
2016/05/04
38
0
(原理篇)基于SQLite3轻量级封装,一行代码实现增删改查

最近写的项目中有用到数据库,写了不少蛋疼的sql语句,每次都是好几行代码,而且每次都是重复的没有一点技术含量的代码,虽然也有不少基于sqlite的封装,不过用起来还是感觉不够面向对象! 为了不再...

秦无炎
2016/07/25
22
0
iOS SQLite3轻量开发框架

最近做一款app,使用到了Sqlite3数据库,ios上的sqlite都是可移植的c语言代码,但是使用起来不像java或者php那么方便,打算尝试一下realm,但是由于项目代码要求支持SQL,因此只能使用SQLite3...

IamOkay
2016/04/14
192
3
【分享】WeX5的正确打开方式(7)——数据组件详解

本文是【WeX5的正确打开方式】系列的第7篇文章,详细介绍WeX5中数据组件的增删改查以及数据定位方法。 前言 上一篇 数据组件初探 我们简单介绍了数据组件的引入和底层结构以及特性,并实现了...

没错就是酱紫
2016/07/12
253
0
战马/steedFramework4web

steedFramework4web by 战马 #最近没更新并不是放弃维护了..只是在憋大招,下次更新将会有非常大的升级(分布式解决方案,更换前端框架,api优化等等),大招还在读条,稍等 ,等不及的同志可以用该分...

战马
2016/11/03
0
0
Spring boot中mongodb的使用

mongodb的增删改查 Spring Boot对各种流行的数据源都进行了封装,当然也包括了mongodb,下面给大家介绍如何在spring boot中使用mongodb: 1、pom包配置 pom包里面添加spring-boot-starter-dat...

glen_xu
06/11
0
0
iOS开发系列--数据存取

概览 在iOS开发中数据存储的方式可以归纳为两类:一类是存储为文件,另一类是存储到数据库。例如前面IOS开发系列—Objective-C之Foundation框架的文章中提到归档、plist文件存储,包括偏好设...

jianxin160
2015/08/18
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

iOS安全应该做哪些事情

1. 尽量使用HTTPS协议。 2. 密码提交的时候,密码使用SHA256加密后传输,MD5等经过哈希碰撞已经可以推算出原文。 3. 密码提交的时候,可以加盐。 4. 密码保存在本地的时候,尽量使用钥匙串保...

HOrange
13分钟前
0
0
react native 注意事项

1. 环境参考官网 android studio 必装 java jdk安装 1.8版本(环境建议自己一步一步配置,切记不要 apt ) 2.有改变编译内容发现 会白屏,然后APP消失,请卸载原来的测试 appinfo (连续两次...

304158
19分钟前
0
0
FOMO游戏代码解析

源代码在此处

怎当她临去时秋波那一转
24分钟前
1
0
EOS智能合约与DApp开发入门

EOS的是Block.One主导研发的一个区块链底层公链系统,它专门为支撑商业去中心化 应用(Decentralized Application)而设计,其代码开源。 比特币被称为区块链1.0,因为它开辟了数字加密货币的...

笔阁
37分钟前
1
0
编译cjson到dll

https://blog.csdn.net/mengzhisuoliu/article/details/52203724 编译完成后 是纯lua实现的json decode 的10倍以上...

梦想游戏人
46分钟前
0
0
JS基础- Date 对象

Date 对象 Date 对象用于处理日期和时间。 创建 Date 对象的语法: var myDate=new Date() 注释:Date 对象会自动把当前日期和时间保存为其初始值。 Date 对象属性 属性 描述 constructor 返...

ZHAO_JH
48分钟前
0
0
Python数据分析numpy(1)

Python开源的科学计算基础库 1.表示N维数组对象ndarray 2.线性代数、傅里叶变换、随机数生成 3.广播函数,整合c++、c 一.数据的维度 1.数据 2.数据维度 3.一维数据 (1)特点 (2)Python中的...

十年磨一剑3344
51分钟前
1
0
csv导入Hive脚本

from pyspark.sql import HiveContexthivec = HiveContext(sc) # 创建一个hivecontext对象用于写执行SQL,sc为sparkcontext# 拼接一个字段类型字符串str_s = 'label String,'...

gulf
53分钟前
0
0
TensorFlow 隐含层 拟合 异或运算

a⊕b = (¬a ∧ b) ∨ (a ∧¬b) 数据 X = [[0, 0], [0, 1], [1, 0], [1, 1]]Y = [[0], [1], [1], [0]] 单层网络只能拟合线性问题,由于异或是非线性问题,需要使用多层网络 输入和输出 [[...

阿豪boy
今天
0
0
SVN 教程

http://www.runoob.com/svn/svn-tutorial.html 记一次 svn 管理的项目迁移工作 之前A服务器上的项目版本管理工具是用的SVN,后来,之前管理linux服务器的员工离职了,这管理服务器的工作也就...

yeahlife
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部