0服务端开辟,MySQL数据库的总是与操作

By admin in 4858.com on 2019年4月23日

本篇博客我们来聊聊MySQL数据库的接连与操作。要是您本地未有MySQL数据库的话,供给你先安装MySQL数据库。在Mac OS中选取brew包处理器举办MySQL的安装是连同方便的。安装MySQL的授命为:brew
install mysql。本篇博客大家将在动用Perfect框架来连接操作数据库了,首先我们要求创建三个测试数据库,然后在测试数据库中创建一张测试表用来增加和删除改查操作。

本篇博客大家来聊聊MySQL数据库的连日与操作。假使你本地未有MySQL数据库的话,须要您先安装MySQL数据库。在Mac OS中利用brew包管理器进行MySQL的装置是会同方便的。安装MySQL的指令为:brew
install mysql。本篇博客大家将在动用Perfect框架来接二连三操作数据库了,首先大家供给创造3个测试数据库,然后在测试数据库中创建一张测试表用来增加和删除改查操作。

前方以及陆6续续的牵线了动用Swift三.0开垦的服务端应用程序的Perfect框架。本篇博客就做贰个阶段性的下结论,做二个完好的实例,其实这些实例在《斯维夫特叁.0服务端开荒(一)》那篇博客中早已轻便的牵线过了,本篇博客就来详细的聊一下那几个工程的切实得以达成细节。当然包含iOS端和服务端的代码。本篇博客的介绍顺序依据作用模块来划分的,如登陆注册模块、记事本列表,记事本的增加和删除改查等功效。在各种功能模块,大家先付给服务端代码的兑现,然后交到客户端代码的贯彻。

日前以及陆陆续续的介绍了选拔斯维夫特叁.0开辟的服务端应用程序的Perfect框架。本篇博客就做一个阶段性的下结论,做二个完完全全的实例,其实那个实例在《斯维夫特3.0服务端开拓(一)》那篇博客中早就轻便的介绍过了,本篇博客就来详细的聊一下那些工程的现实贯彻细节。当然包蕴iOS端和服务端的代码。本篇博客的介绍顺序遵照作用模块来划分的,如登6注册模块、记事本列表,记事本的增加和删除改查等职能。在各类功用模块,大家先提交服务端代码的实现,然后提交客户端代码的兑现。

在博客的发端呢,先来推举一款Mac上相比好用又免费的MySQL可视化处理工具Sequel
Pro。这款工具用的是一定的随手呢,应用的Logo如下所示:

在博客的起初呢,先来推举一款Mac上比较好用又无偿的MySQL可视化管理工科具Sequel
Pro。这款工具用的是十分的随手呢,应用的图标如下所示:

本篇博客的前几有个别重视介绍任何工程的公用模块,为工程的落到实处做希图,下方就是大家明天博客要做的东西。本篇博客iOS端的互联网请求首要使用的NSU福特ExplorerLSession来完结的,关于U本田UR-VLSession更详尽的牵线请参考以前公布的博客《NSURLSession全家桶》

本篇博客的前几局地重视介绍任何工程的公用模块,为工程的落到实处做计划,下方即是我们前日博客要做的东西。本篇博客iOS端的网络请求重要使用的NSU昂科威LSession来落到实处的,关于UXC90LSession更详尽的牵线请参见在此之前发表的博客《NSURLSession全家桶》

  4858.com 1

  4858.com 2

  4858.com 3

  4858.com 4

 

 

 

 

1、测试数据库的创造

1、测试数据库的创设

一、记事本数据库的设计

壹、记事本数据库的陈设性

本有的与Perfect框架毫不相关,完全是MySQL的始末,是Perfect操作数据库的筹算专业。前提是您曾经设置好了MySQL数据库了。

本有的与Perfect框架毫无干系,完全是MySQL的内容,是Perfect操作数据库的预备干活。前提是您早就安装好了MySQL数据库了。

数据库的统一希图以及数据库表的创办自个儿都利用Sequel Pro来完毕的,关于Sequel
Pro的采纳请看上篇博客的牵线,本篇博客关于Sequel
Pro的牵线就不做过多废话了。首先大家先交给记事本数据库表的安顿,以备使用。大家先创立一个名称为perfect_note的数据库(步骤略),然后再成立相应的数码库表。因为大家的记事本比较轻松,主要包罗登6、注册以及记事本的增加和删除改查。所以大家的数据库结构也是相比轻松的,perfect_note数据库中唯有八个表,贰个是user表,3个是content表,下方会付出详细的介绍进度。

数据库的宏图以及数据库表的始建本人都利用Sequel Pro来完成的,关于Sequel
Pro的施用请看上篇博客的牵线,本篇博客关于Sequel
Pro的牵线就不做过多废话了。首先大家先交给记事本数据库表的规划,以备使用。大家先创立1个名叫perfect_note的数据库(步骤略),然后再次创下制相应的数码库表。因为我们的记事本比较轻松,首要归纳登入、注册以及记事本的增加和删除改查。所以大家的数据库结构也是相比较轻易的,perfect_note数据库中唯有七个表,二个是user表,四个是content表,下方会交到详细的介绍进程。

 

 

1.user表的开创

1.user表的创造

一、运营MySQL的服务器

一、运转MySQL的服务器

先是大家来创设user表,user表担负存款和储蓄用户新闻,当用户注册和登入时都会操作这些表。注册用户时就是往该表中插入用户,登入时就是询问相应的用户消息。当然,为了德姆o的简洁性,大家的user表中的字段也是相比少的。下方正是创设user表的SQL语句。在那之中有四个字段,主键id是整型而且是自增的,是用户的唯一象征。username字段存款和储蓄的是用户名,password存储的纵然用户密码。register_date存款和储蓄的是用户注册时间,是岁月戳,并且暗中认可值是当下日子。

第三大家来创制user表,user表负担存款和储蓄用户音讯,当用户注册和登入时都会操作那个表。注册用户时就是往该表中插入用户,登6时便是查询相应的用户新闻。当然,为了德姆o的简洁性,大家的user表中的字段也是比较少的。下方正是创制user表的SQL语句。个中有多个字段,主键id是整型而且是自增的,是用户的绝无仅有代表。username字段存款和储蓄的是用户名,password存款和储蓄的固然用户密码。register_date存款和储蓄的是用户注册时间,是时间戳,并且暗许值是日前光阴。

这点虽说简易,但并非遗忘运营你的MySQL服务啊,不然Sequel
Pro是心有余而力不足连接你的MySQL数据库的。具体开发银行情势如下。

那或多或少纵然简易,但决不遗忘运行你的MySQL服务呢,不然Sequel
Pro是力不从心连接你的MySQL数据库的。具体开发银行形式如下。

CREATE TABLE `user` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `username` varchar(30) CHARACTER SET latin1 NOT NULL DEFAULT '',
  `password` varchar(30) CHARACTER SET latin1 NOT NULL DEFAULT '',
  `register_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;
CREATE TABLE `user` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `username` varchar(30) CHARACTER SET latin1 NOT NULL DEFAULT '',
  `password` varchar(30) CHARACTER SET latin1 NOT NULL DEFAULT '',
  `register_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;

  4858.com 5

  4858.com 6

 

 

起步是start,那么关闭MySQL数据库就是stop了,如下所示:

开发银行是start,那么关闭MySQL数据库正是stop了,如下所示:

2.content表的创导

2.content表的成立

  4858.com 7

  4858.com 8

始建完user表后,接下去就要开创我们的content表了。content表用来存储用户录入的笔记,下方正是content表的创导SQL语句。从尘世的SQL语句中轻松看出content表的字段包含自增的主键id,记录的标题title,记录的剧情content,以及外键userID和创立时间create_time。

始建完user表后,接下去将要成立大家的content表了。content表用来存款和储蓄用户录入的笔记,下方正是content表的开创SQL语句。从下方的SQL语句中简单看出content表的字段包含自增的主键id,记录的标题title,记录的内容content,以及外键userID和制造时间create_time。

 

 

CREATE TABLE `content` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `title` varchar(30) CHARACTER SET gb2312 NOT NULL DEFAULT '',
  `content` text CHARACTER SET gb2312 NOT NULL,
  `userID` int(11) unsigned NOT NULL,
  `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  KEY `USER_FOREIGN_KEY` (`userID`),
  CONSTRAINT `USER_FOREIGN_KEY` FOREIGN KEY (`userID`) REFERENCES `user` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=18 DEFAULT CHARSET=utf8;
CREATE TABLE `content` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `title` varchar(30) CHARACTER SET gb2312 NOT NULL DEFAULT '',
  `content` text CHARACTER SET gb2312 NOT NULL,
  `userID` int(11) unsigned NOT NULL,
  `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  KEY `USER_FOREIGN_KEY` (`userID`),
  CONSTRAINT `USER_FOREIGN_KEY` FOREIGN KEY (`userID`) REFERENCES `user` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=18 DEFAULT CHARSET=utf8;

贰.用到Sequel
Pro连接操作数据库

贰.应用Sequel
Pro连接操作数据库

 

 

(1)、连接MySQL数据库

(1)、连接MySQL数据库

 

 

开垦Sequel Pro,输入你MySQL的主机名,用户名以及密码。具体连接那个数据库能够不选,然后填上具体的端口,私下认可是330六。点击连接就能够。具体如下所示:

开采Sequel Pro,输入你MySQL的主机名,用户名以及密码。具体连接这么些数据库能够不选,然后填上具体的端口,暗许是3306。点击连接就可以。具体如下所示:

贰、iOS端基于NSUBMWX三LSession互联网请求类的卷入

二、iOS端基于NSU昂CoraLSession互联网请求类的包装

  4858.com 9

  4858.com 10

创造完数据库后,接下去大家来封装iOS端网络请求的共用代码。约等于说,iOS端的网络请求就会调用本有的包装的剧情。当然本有的包装的互连网请求类是运用NSU中华VLSession类封装的。

创设完数据库后,接下去我们来封装iOS端互连网请求的共用代码。也正是说,iOS端的网络请求就会调用本有的包装的剧情。当然本有的包装的网络请求类是选取NSU猎豹CS陆LSession类封装的。

 

 

 

 

(2)、创设测试数据库

(二)、创造测试数据库

0服务端开辟,MySQL数据库的总是与操作。一.字符串常量、闭包回调类型以及枚举的概念

①.字符串常量、闭包回调类型以及枚举的概念

接下来点击增添数据库,创制新的数据库就可以,下方我们成立的是test数据库,编码情势用的是utf八。如下所示。

下一场点击增添数据库,成立新的数据库就可以,下方我们创设的是test数据库,编码格局用的是utf八。如下所示。

率先大家先来定义一些装进网络请求类要使用的字符串常量以及枚举闭包回调。下方代码段做的正是那件事情,第一个框中定义了分析响应数据时利用到的字符串常量。“SUCCESS”表示请求成功,“FAILE”表示请求战败等等。

率先大家先来定义一些装进互联网请求类要使用的字符串常量以及枚举闭包回调。下方代码段做的正是那件业务,第三个框中定义驾驭析响应数据时接纳到的字符串常量。“SUCCESS”表示请求成功,“FAILE”表示请求战败等等。

  4858.com 114858.com 12

  4858.com 134858.com 14

第2个框中定义的是八个闭包变量,用来将呼吁结果回调给调用者。RequestStart正是开头请求要调用的闭包类型,RequestSuccess则是呼吁成功后调用的闭包类型,RequestFailed则是伸手战败要调用的闭包类型。那3者是请求类对外交换的大桥。

其次个框中定义的是多个闭包变量,用来将请求结果回调给调用者。RequestStart正是从头请求要调用的闭包类型,RequestSuccess则是请求成功后调用的闭包类型,RequestFailed则是呼吁战败要调用的闭包类型。这三者是请求类对外交流的桥梁。

 

 

其多个框则是请求方式的枚举,主要蕴含GET、POST、PUT、DELETE,当然还留了CUSTOM()自定义的增加项目。在该枚举中的description总计属性担当将目前的枚举对象转变到其对于的字符串,具体如下所示:

其四个框则是呼吁情势的枚举,重要不外乎GET、POST、PUT、DELETE,当然还留了CUSTOM()自定义的扩张类型。在该枚举中的description总结属性肩负将眼下的枚举对象转换到其对于的字符串,具体如下所示:

(3)、创建user表

(3)、创建user表

  4858.com 15

  4858.com 16

开创完数据库后,接下去大家要开创2个user表用来举办测试。点击左下方的加号来创建新的多少库表,下方正是我们创造的多寡库表的具体步骤以及现实的参数配置。如下所示:

成立完数据库后,接下去大家要创立三个user表用来举办测试。点击左下方的加号来成立新的数量库表,下方就是我们创设的数目库表的具体步骤以及现实的参数配置。如下所示:

 

 

  4858.com 17

  4858.com 18

二、网络请求基类的创立

二、网络请求基类的创导

创制完user表后,大家需求往表里边增加一些测试字段,下方就是大家增多的有些字段。在我们的user表中有红尘八个字段,id是主键,用户的唯一标示。username-用户名,password-用户密码,create_time是开创时间,create_time的花色是时刻戳,而且暗许值是现阶段时刻。具体如下所示。

创立完user表后,大家要求往表里边增加一些测试字段,下方正是我们抬高的部分字段。在大家的user表中有江湖七个字段,id是主键,用户的绝无仅有标示。username-用户名,password-用户密码,create_time是创设时间,create_time的项目是时刻戳,而且暗许值是目前时间。具体如下所示。

接下去网络请求的基类,全部与网络请求相关的类都要接二连三自此类,下方的BaseRequest正是大家互联网请求的基类。该类比较轻易,主要证明了地点定义的八个闭包类型的变量,然后交到了相应的构造器。具体如下所示。

接下去网络请求的基类,全体与网络请求相关的类都要一连自此类,下方的BaseRequest正是我们互连网请求的基类。该类相比轻松,主要注脚了地点定义的四个闭包类型的变量,然后交给了对应的构造器。具体如下所示。

  4858.com 19

  4858.com 20

  4858.com 21

  4858.com 22

 

 

 

 

 

 

三.互联网请求类的卷入

3.互联网请求类的包装

二、Perfect数据库连接

2、Perfect数据库连接

接下去大家接纳NSU昂CoraLSession来封装大家的互连网请求类,下方的Request类正是大家封装的网络请求类,该类承继自BaseRequest。下方是Request的部分代码,下方每一种方法对应着GET、POST、PUT等请求,能够结合者REST一同利用。在各类具体请求的方法中会调用sessionDataTaskRequest()方法。会给那些点子传入区别的呼吁情势以及路线和参数。稍后大家会给出sessionDataTaskRequest()方法的具体贯彻,sessionDataTaskRequest()方法个中就利用了NSU君越LSession相关的内容提倡了互连网请求,具体请看下方对sessionDataTaskRequest()方法的详细介绍。

接下去大家接纳NSU揽胜LSession来封装我们的互连网请求类,下方的Request类就是大家封装的网络请求类,该类承继自BaseRequest。下方是Request的1部分代码,下方每一种方法对应着GET、POST、PUT等请求,能够结合者REST一同利用。在每一种具体请求的方法中会调用sessionDataTaskRequest()方法。会给这么些法子传入不相同的伸手形式以及路线和参数。稍后我们会给出sessionDataTaskRequest()方法的切实可行落到实处,sessionDataTaskRequest()方法当中就采用了NSUBMWX五LSession相关的内容提倡了网络请求,具体请看下方对sessionDataTaskRequest()方法的详尽介绍。

万事俱备只欠东风,下边筹划完MySQL数据库后,大家将在开端张开Perfect框架连接数据库的内容了。

万事俱备只欠DongFeng,下面准备完MySQL数据库后,大家就要开始张开Perfect框架连接数据库的内容了。

  4858.com 23

  4858.com 24

1.引入信赖库

1.引进依赖库

人尘寰这一个代码段正是sessionDataTaskRequest()方法的完好布局,首先大家依照函数的呼吁路线和参数拼接U普拉多L字符串,也正是首先个框中的部分。在该部分中的query()函数是将参数进行UENCOREL编码转变,那一个函数是从AlamoFire框架中摘过来的。然后创造请求用的U陆风X8LRequest对象。最终是创设Session对象发起DataTask职分了。当然请求的结果是在completionHandler闭包中展开始拍片卖,稍后会提交completionHandler闭包中的管理格局。

俗世那几个代码段便是sessionDataTaskRequest()方法的总体结构,首先大家依据函数的请求路线和参数拼接URAV肆L字符串,也正是率先个框中的部分。在该片段中的query()函数是将参数进行U福睿斯L编码转变,那个函数是从AlamoFire框架中摘过来的。然后创设请求用的UKoleosLRequest对象。最后是成立Session对象发起DataTask职务了。当然请求的结果是在completionHandler闭包中实行拍卖,稍后会付出completionHandler闭包中的管理方式。

根据惯例,Perfect框架连接数据库还是亟待包的支撑。首先大家须求引进操作MySQL相关的包。

依据惯例,Perfect框架连接数据库还是需求包的支撑。首先大家须求引进操作MySQL相关的包。

  4858.com 25

  4858.com 26

 //MySql数据库注重包

.Package(url: “”,
4858.com,majorVersion: 2, minor: 0)

 //MySql数据库依赖包

.Package(url: “”,
majorVersion: 2, minor: 0)

接着,我们提交请求成功后,对json数据的解析以及对回到结果的拍卖。下方正是completionHandler闭包中的代码片段。首先对服务器再次回到的json数据开始展览辨析,解析后将json数据转变到对应的数据类型。然后依据响应报文的result字段来开展对应的操作。假诺报文响应平常,就调用success()闭包,不然调用failure()闭包,如下所示:

继之,大家提交请求成功后,对json数据的辨析以及对回到结果的处理。下方正是completionHandler闭包中的代码片段。首先对服务器再次回到的json数据实行剖析,解析后将json数据转换来对应的数据类型。然后根据响应报文的result字段来举办对应的操作。借使报文响应平常,就调用success()闭包,不然调用failure()闭包,如下所示:

尘世是增添完上述的借助包后,重新开始展览编译的结果:

尘寰是增加完上述的借助包后,重新进行编写翻译的结果:

  4858.com 27

  4858.com 28

  4858.com 29

  4858.com 30

迄今结束大家iOS客户端的网络请求部分就封装完了,别的实际事情逻辑的互联网请求调用上述的Request类就能够,稍后会用到Request。

迄今截止我们iOS客户端的网络请求部分就封装完了,别的实际业务逻辑的互连网请求调用上述的Request类就可以,稍后会用到Request。

 

 

 

 

贰、数据库连接

二、数据库连接

三、登6注册模块的支付

3、登入注册模块的付出

世间代码段中的MySQLConnnet类就担当数据库的连天并且选用相应的数据库。下方是MySQLConnnet类的欧洲经济共同体布局,host,port,user,password都是只读的总计属性,负担布署连接数据库的参数。而mysql属性正是接连数据库后的操作句柄。下方重要有四个办法,多个是三番五次数据库的办法connectDataBase()和抉择数据库的点子selectDataBase()。MySQLConnnet类对外是以单例的样式存在的,然则对外暴漏的不是MySQLConnnet类的目标,而是MySQL类的目的。

人红尘代码段中的MySQLConnnet类就承担数据库的连年并且采纳相应的数据库。下方是MySQLConnnet类的壹体化布局,host,port,user,password都以只读的企图属性,担负安插连接数据库的参数。而mysql属性正是连连数据库后的操作句柄。下方首要有七个章程,三个是三番五次数据库的方法connectDataBase()和选拔数据库的主意selectDataBase()。MySQLConnnet类对外是以单例的款式存在的,然而对外暴漏的不是MySQLConnnet类的靶子,而是MySQL类的对象。

上面包车型地铁底子职业甘休后,接下去我们就要来做大家相应的政工模块了。首先我们来实行登陆注册模块的支出职业。
首先付诸服务端相应模块的代码,然后在交付相应模块的iOS端的完毕。关于Swift三.0连接和操作MySQL的详实内容请参考上1篇博客《Swift叁.0服务端开拓(4)
MySQL数据库的连天与操作》,数据库的总是在本有的就不做过多废话了。

上边的基本功专门的职业实现后,接下去大家即以往做大家相应的职业模块了。首先我们来开始展览登入注册模块的开支工作。
首先付诸服务端相应模块的代码,然后在付给相应模块的iOS端的完成。关于Swift三.0连接和操作MySQL的详细内容请参考上一篇博客《Swift3.0服务端开辟(4)
MySQL数据库的连天与操作》,数据库的接连在本有的就不做过多废话了。

  4858.com 31

  4858.com 32

一、服务端代码

一、服务端代码

接下去提交具体的代码完毕,下方便是MySQLConnnet类的单例和私家构造器。具体完结如下所示:

接下去提交具体的代码完成,下方正是MySQLConnnet类的单例和个人构造器。具体贯彻如下所示:

(1)、登陆或注册的率先步:接收用户名

(1)、登入或注册的第壹步:接收用户名

  4858.com 33

  4858.com 34

凡尘代码是用户登录如故注册的第一步,通过用户名来查询用户新闻,从而来判断该用户是不是注册,假若未注册则去挂号,借使注册过就去登6。假设查询成功,那么就将查询的用户ID和UserName再次回到给客户端。用户登6的代码和江湖大约,正是经过Select语句来同盟该用户名的密码是不是与用户输入的同等,在此就不做过多废话了。

红尘代码是用户登六照旧注册的率先步,通过用户名来查询用户新闻,从而来判别该用户是不是注册,假使未注册则去挂号,尽管注册过就去登陆。假若查询成功,那么就将查询的用户ID和UserName重回给客户端。用户登入的代码和江湖大致,便是通过Select语句来协作该用户名的密码是还是不是与用户输入的同样,在此就不做过多废话了。

凡尘是数据库的连年,主题语句正是下方红框中的内容。首要仍旧调用MySQL类中的connect()方法,在调用该方法时传出相应的参数就可以。若是总是战败了会回到相应的errorMessage。具体代码如下所示:

人俗尘是数据库的接二连三,宗旨语句便是下方红框中的内容。重要还是调用MySQL类中的connect()方法,在调用该措施时传出相应的参数就可以。假使连接失利了会回来相应的errorMessage。具体代码如下所示:

  4858.com 35

  4858.com 36

  4858.com 37

  4858.com 38

(二)、用户注册

(2)、用户注册

连年完数据库后,然后是选项数据库,下方是挑选数据库的代码。使用mysql句柄调用selectDataBase()方法,具体代码如下所示:

总是完数据库后,然后是选用数据库,下方是选项数据库的代码。使用mysql句柄调用selectDataBase()方法,具体代码如下所示:

凡间就是用户注册是调用的接口完结,首即便插入相应的用户消息,具体如下所示:

凡间正是用户注册是调用的接口达成,首倘使插入相应的用户消息,具体如下所示:

  4858.com 39

  4858.com 40

  4858.com 41

  4858.com 42

 

 

地方那么些代码写完后,配置完相应的路由调用上述格局,大家的服务端代码就落成了。具体路由的陈设因为篇幅有限,本篇博客就不做过多废话了。

地点那几个代码写完后,配置完相应的路由调用上述办法,大家的服务端代码就形成了。具体路由的布局因为篇幅有限,本篇博客就不做过多废话了。

 

 

 

 

3、数据库操作

3、数据库操作

2、iOS客户端代码完结

2、iOS客户端代码落成

接下去大家将要调用上面的数据库操作类类操作实际数据库中的表了。在第一有的我们早就创制好了test数据库,并且创办好了相应的user表。接下来大家将在采用Swift代码来对User表进行增加和删除改查操作了。

接下去大家将要调用上面的数据库操作类类操作实际数据库中的表了。在率先有的大家曾经创立好了test数据库,并且创办好了相应的user表。接下来我们将要选用Swift代码来对User表实行增加和删除改查操作了。

接下去大家来得以落成iOS客户端的报到和注册的代码,下方就是登6依旧注册的相关UI。用户输入用户后,点击下一步,会调用后台接口剖断用户是还是不是注册过,借使已登记输入密码登六,假如未注册就输入密码注册和登入。右侧的UIViewController是公共的,三个页面,二个让用户输入用户名,二个则承担接收密码。UI相比轻易,如下所示:

接下去大家来落到实处iOS客户端的报到和注册的代码,下方正是登入依然注册的相关UI。用户输入用户后,点击下一步,会调用后台接口决断用户是不是注册过,假若已登记输入密码登入,假若未注册就输入密码注册和登入。左边的UIViewController是集体的,三个页面,一个让用户输入用户名,2个则承担接收密码。UI比较轻易,如下所示:

 

 

  4858.com 43

  4858.com 44

1.营造数据库操作基类

一.营造数据库操作基类

 看完UI, 大家来看一下记名或注册的相干互联网请求的代码。下方的UserInfoRequest类就承担全体与用户消息相关的互联网请求,从下方的代码截图中,大家得以看到UserInfoRequest的基类是BaseRequest。下方的queryUserInfo(userName)就是下面右边的页面所调用的点子,用来剖断该用户是还是不是是注册过的用户。在queryUserInfo()中对Request类进行了实例化,并且调用了对应的央求方法。并且对相应的风浪回调做了管理,具体如下所示。

 看完UI, 大家来看一下报到或注册的连锁网络请求的代码。下方的UserInfoRequest类就背负全体与用户消息相关的互连网请求,从凡尘的代码截图中,大家得以看出UserInfoRequest的基类是BaseRequest。下方的queryUserInfo(userName)正是下面左边的页面所调用的法子,用来剖断该用户是不是是注册过的用户。在queryUserInfo()中对Request类举办了实例化,并且调用了对应的央浼方法。并且对相应的事件回调做了管理,具体如下所示。

尘间截图就是大家创设的数据库操作的基类,全体数据库表的操作都要再三再四自该基类,在基类中定义了操作数据库的名字dataBaseName,MySQL操作句柄mysql,以及响应json的格式responsJson。具体如下所示。

江湖截图正是大家营造的数据库操作的基类,全体数据库表的操作都要接二连三自该基类,在基类中定义了操作数据库的名字dataBaseName,MySQL操作句柄mysql,以及响应json的格式responsJson。具体如下所示。

  4858.com 45

  4858.com 46

  4858.com 47

  4858.com 48

在我们相应的ViewController中会调用上述的方式,下方正是用户在输入相应的用户消息后点击next所调用的法子。通过相应的闭包事件,最后将网络请求的结果回调到了VC中。

在大家相应的ViewController中会调用上述的不二法门,下方就是用户在输入相应的用户音讯后点击next所调用的方法。通过相应的闭包事件,最后将网络请求的结果回调到了VC中。

 

 

  4858.com 49

  4858.com 50

贰.营造user表的操作类

二.塑造user表的操作类

至此大家iOS客户端的报到就兑现完工了。
其余的代码和上边的思绪类似,在此就不做过多废话了。

现今我们iOS客户端的报到就得以完毕得了了。
别的的代码和上边的思绪类似,在此就不做过多废话了。

世间的UserOperator类就是大家创造的尤其来操作user表的类,重借使对user表的增加和删除改查操作。insertUserInfo()担当“增”,即插入用户音讯。deleteUser()担当“删”,通过userId来删除用户。updateUserInfo()就担任“改”,更新用户消息。queryUserInfo()就背负“查”了,担负从user表中通过用户名来查询消息。

人俗尘的UserOperator类正是大家创造的专门来操作user表的类,重要是对user表的增加和删除改查操作。insertUserInfo()担任“增”,即插入用户音讯。deleteUser()负担“删”,通过userId来删除用户。updateUserInfo()就担负“改”,更新用户消息。queryUserInfo()就承受“查”了,肩负从user表中通过用户名来查询消息。

 

 

  4858.com 51

  4858.com 52

本篇博客,就先到那时吧,别的代码和上述的思绪一向,依据上述的思绪去落到实处笔记的增删改查就能够,在此就不多废话了。完整Demo请移步github相关链接。

本篇博客,就先到那儿吧,其余代码和上述的思绪一直,遵照上述的笔触去得以完毕笔记的增加和删除改查就可以,在此就不多废话了。完整德姆o请移步github相关链接。

 

 

github分享链接: https://github.com/lizelu/PerfectDemo 

github分享链接: https://github.com/lizelu/PerfectDemo 

(1)、InsertUserInfo()—-“增”

(1)、InsertUserInfo()—-“增”

尘凡正是插入数据的现实性代码,第3个框正是大家要实践的SQL语句,然后采取mysql操作句柄调用query()方法开始展览SQL语句的进行。试行成功后,查询插入的数目并赶回查询的结果,如下所示。

江湖便是插入数据的切实可行代码,第三个框正是大家要实行的SQL语句,然后使用mysql操作句柄调用query()方法开始展览SQL语句的实施。实行成功后,查询插入的多少并回到查询的结果,如下所示。

  4858.com 53

  4858.com 54

 

 

(2)、deleteUserInfo()—-“删”

(2)、deleteUserInfo()—-“删”

接下去大家来看一下去除的具体操作,下方截图就是deleteUserInfo()的现实贯彻。下方的法子与插入差不多,先给出delete的SQL语句,然后再调用mysql操作句柄的query()操作,具体代码如下所示:

接下去大家来看一下删减的具体操作,下方截图就是deleteUserInfo()的切实落到实处。下方的格局与插入大约,先给出delete的SQL语句,然后再调用mysql操作句柄的query()操作,具体代码如下所示:

  4858.com 55

  4858.com 56

 

 

(3)、updateUserInfo—-更新用户音信

(3)、updateUserInfo—-更新用户新闻

江湖是创新用户音讯的代码,与上多少个代码大概,只可是是透过mysql操作句柄调用query()方法实行的是update的SQL语句。更新时大家使用了MySQL的now()函数来更新时间,具体代码如下所示。

江湖是立异用户新闻的代码,与上多少个代码大概,只然而是经过mysql操作句柄调用query()方法实行的是update的SQL语句。更新时大家接纳了MySQL的now()函数来更新时间,具体代码如下所示。

  4858.com 57

  4858.com 58

 

 

(4)、queryUserInfo—-查询

(4)、queryUserInfo—-查询

跟着大家来落到实处一下查询用户新闻的代码。下方正是询问用户消息的代码,查询的代码稍微复杂一些,在实行完询问的SQL语句后,还索索要的价格格查询结果举办仓库储存。在存款和储蓄后,会回到查询的结果results。大家得以通过results的forEachRow()函数的随从闭包来获取每行的多少。在抽出数据后,将其转变来相应的字典,然后将存有询问结果的字典存入到responseJson中,然后将responseJson转变为json字符串再次回到给用户即可。具体做法如下所示。

继而大家来落成一下询问用户音信的代码。下方正是询问用户新闻的代码,查询的代码稍微复杂一些,在施行完询问的SQL语句后,还索递价格查询结果举行仓库储存。在蕴藏后,会回到查询的结果results。大家能够通过results的forEachRow()函数的随从闭包来赚取每行的数目。在抽取数据后,将其调换来相应的字典,然后将存有询问结果的字典存入到responseJson中,然后将responseJson转变为json字符串重回给用户就能够。具体做法如下所示。

  4858.com 59

  4858.com 60

 

 

 

 

四、测试用例

肆、测试用例

地方咱们写完操作User表的应和的艺术后接下去大家就来测试一些切实可行的结果。为了便利测试,大家配备陆个路由专门用来对User表的增加和删除改成实行操作。每一个路由对应着地点每种方法。本有的就付出相应的测试用例。为了便利测试,大家在路由安排时,钦赐请求方法全是GET请求。

上边我们写完操作User表的相应的法子后接下去大家就来测试一些切实的结果。为了有利于测试,大家安顿多个路由尤其用来对User表的增加和删除改成实行操作。种种路由对应着地点每一个方法。本有的就提交相应的测试用例。为了有利于测试,大家在路由安排时,钦点请求方法全是GET请求。

 

 

1、对“增”的测试

1、对“增”的测试

接下去大家对InsertUserInfo()的的测试,首先大家抬高中2年级个呼吁方式为GET的“/create”路由,然后拿走用户提交的userName和password。获取完结后,调用UserOperator对象的insertUserInfo()方法将数据插入到数据库中。当然插入后,会随着将数据查询出来再次回到给客户端的。

接下去大家对InsertUserInfo()的的测试,首先我们抬高贰个伸手方式为GET的“/create”路由,然后拿走用户提交的userName和password。获取实现后,调用UserOperator对象的insertUserInfo()方法将数据插入到数据库中。当然插入后,会跟着将数据查询出来重临给客户端的。

  4858.com 61

  4858.com 62

我们在浏览器里拜访“

大家在浏览器里拜访“

  4858.com 63

  4858.com 64

 

 

2.对“改”的测试

2.对“改”的测试

接下去大家将在测试一下updateUserInfo()那个函数,该部分与上述的代码大概,也是索要配备四个呼吁格局为GET的立异路由“/update”。然后在该路由中获得请求参数,然后调用updateUserInfo()这几个函数就可以。具体代码就不做过多废话了,直接看下方的测试结果吧。通过结果容易看出,用户名被涂改成正确的Hello了,而且时间也被更新了。

接下去大家就要测试一下updateUserInfo()那几个函数,该片段与上述的代码差不离,也是索要配置七个请求格局为GET的立异路由“/update”。然后在该路由中获得请求参数,然后调用updateUserInfo()那么些函数就能够。具体代码就不做过多废话了,直接看下方的测试结果吧。通过结果轻便看出,用户名被涂改成精确的Hello了,而且时间也被更新了。

  4858.com 65

  4858.com 66

 

 

余下的查与删,和上边的以身作则大概,在此就不做过多废话了,我们的MySQL数据库的操作就先谈到那吗。官方上还介绍了有些数据库的O奇骏M操作,在这之中就有MySQL的OLacrosseM操作,能够简化一些数目操作。那一点就留给读者自身去看呢。

结余的查与删,和下边包车型地铁言传身教大约,在此就不做过多废话了,大家的MySQL数据库的操作就先说到那吗。官方上还介绍了有的数据库的O凯雷德M操作,个中就有MySQL的O奥迪Q3M操作,能够简化一些多少操作。这点就留下读者自个儿去看吗。

 

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图
Copyright @ 2010-2019 美高梅手机版4858 版权所有