记事本的开销,0服务端开拓

本篇博客大家来聊聊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.0开采的服务端应用程序的Perfect框架。本篇博客就做1个阶段性的下结论,做二个总体的实例,其实这些实例在《斯维夫特三.0服务端开辟(一)》那篇博客中曾经轻易的牵线过了,本篇博客就来详细的聊一下那么些工程的切实落到实处细节。当然包罗iOS端和服务端的代码。本篇博客的介绍顺序根据作用模块来划分的,如登陆注册模块、记事本列表,记事本的增删改查等效果。在各样效用模块,咱们先交给服务端代码的兑现,然后交给客户端代码的兑现。

前方以及陆陆续续的介绍了运用斯威夫特三.0开垦的服务端应用程序的Perfect框架。本篇博客就做四个阶段性的下结论,做一个完整的实例,其实那么些实例在《Swift三.0服务端开辟(1)》那篇博客中早就轻松的牵线过了,本篇博客就来详细的聊一下这些工程的现实性落成细节。当然包蕴iOS端和服务端的代码。本篇博客的牵线顺序根据功效模块来划分的,如登陆注册模块、记事本列表,记事本的增删改查等职能。在每一种功用模块,大家先付给服务端代码的贯彻,然后交由客户端代码的得以落成。

在博客的早先呢,先来推荐1款Mac上相比好用又无偿的MySQL可视化管理工科具Sequel
Pro。那款工具用的是相当的随手呢,应用的Logo如下所示:

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

本篇博客的前几部分至关心器重要介绍任何工程的公用模块,为工程的达成做准备,下方正是我们今天博客要做的东西。本篇博客iOS端的互连网请求主要行使的NSU逍客LSession来落到实处的,关于U昂CoraLSession更详实的牵线请参考以前发布的博客《NSURLSession全家桶》

本篇博客的前几部分重大介绍任何工程的公用模块,为工程的贯彻做准备,下方就是大家明日博客要做的事物。本篇博客iOS端的互连网请求首要采取的NSUHavalLSession来促成的,关于U福特ExplorerLSession更详细的牵线请参见在此以前宣布的博客《NSURLSession全家桶亚洲必赢手机入口,》

  亚洲必赢手机入口 1

  亚洲必赢手机入口 2

  亚洲必赢手机入口 3

  亚洲必赢手机入口 4

 

 

 

 

一、测试数据库的创办

1、测试数据库的创立

记事本的开销,0服务端开拓。1、记事本数据库的布置

一、记事本数据库的规划

本有的与Perfect框架无关,完全是MySQL的始末,是Perfect操作数据库的备选工作。前提是你已经安装好了MySQL数据库了。

本有的与Perfect框架非亲非故,完全是MySQL的始末,是Perfect操作数据库的备选工作。前提是你早已安装好了MySQL数据库了。

数据库的设计以及数据库表的创设自个儿都使用Sequel Pro来落成的,关于Sequel
Pro的运用请看上篇博客的牵线,本篇博客关于Sequel
Pro的介绍就不做过多废话了。首先大家先付给记事本数据库表的筹划,以备使用。大家先创设3个名叫perfect_note的数据库(步骤略),然后再次创下造相应的数量库表。因为我们的记事本比较不难,首要总结登陆、注册以及记事本的增加和删除改查。所以大家的数据库结构也是相比轻便的,perfect_note数据库中唯有八个表,2个是user表,3个是content表,下方会提交详细的牵线进程。

数据库的宏图以及数据库表的创办本身都施用Sequel Pro来达成的,关于Sequel
Pro的接纳请看上篇博客的牵线,本篇博客关于Sequel
Pro的介绍就不做过多废话了。首先大家先交付记事本数据库表的规划,以备使用。大家先创建3个名叫perfect_note的数据库(步骤略),然后再次创下造相应的数目库表。因为大家的记事本比较轻松,首要不外乎登入、注册以及记事本的增加和删除改查。所以大家的数据库结构也是相比较简单的,perfect_note数据库中只有八个表,多少个是user表,三个是content表,下方会交到详细的介绍进度。

 

 

一.user表的创办

一.user表的制造

壹、运行MySQL的服务器

一、运行MySQL的服务器

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

第二我们来创制user表,user表负责存款和储蓄用户音信,当用户注册和登入时都会操作那么些表。注册用户时就是往该表中插入用户,登陆时就是查询相应的用户消息。当然,为了德姆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;

  亚洲必赢手机入口 5

  亚洲必赢手机入口 6

 

 

启航是start,那么关闭MySQL数据库正是stop了,如下所示:

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

二.content表的创立

2.content表的始建

  亚洲必赢手机入口 7

  亚洲必赢手机入口 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的主机名,用户名以及密码。具体连接那一个数据库能够不选,然后填上实际的端口,私下认可是330六。点击连接就能够。具体如下所示:

二、iOS端基于NSU路虎极光LSession网络请求类的包装

2、iOS端基于NSU福睿斯LSession互联网请求类的包裹

  亚洲必赢手机入口 9

  亚洲必赢手机入口 10

开创完数据库后,接下去我们来封装iOS端网络请求的共用代码。也等于说,iOS端的互连网请求就会调用本有的包装的内容。当然本有的包装的互联网请求类是行使NSUOdysseyLSession类封装的。

创造完数据库后,接下去大家来封装iOS端互联网请求的共用代码。也等于说,iOS端的网络请求就会调用本有的包装的始末。当然本有的包装的网络请求类是行使NSURubiconLSession类封装的。

 

 

 

 

(2)、创设测试数据库

(贰)、创造测试数据库

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

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

下一场点击增添数据库,创设新的数据库就能够,下方咱们创设的是test数据库,编码格局用的是utf八。如下所示。

接下来点击增加数据库,成立新的数据库就能够,下方大家创立的是test数据库,编码情势用的是utf捌。如下所示。

首先大家先来定义1些装进互连网请求类要选用的字符串常量以及枚举闭包回调。下方代码段做的便是那件职业,第1个框中定义了剖析响应数据时采用到的字符串常量。“SUCCESS”表示请求成功,“FAILE”表示请求战败等等。

第一我们先来定义一些封装互联网请求类要运用的字符串常量以及枚举闭包回调。下方代码段做的正是那件业务,首个框中定义驾驭析响应数据时行使到的字符串常量。“SUCCESS”表示请求成功,“FAILE”表示请求失利等等。

  亚洲必赢手机入口 11亚洲必赢手机入口 12

  亚洲必赢手机入口 13亚洲必赢手机入口 14

其次个框中定义的是八个闭包变量,用来将请求结果回调给调用者。RequestStart正是伊始请求要调用的闭包类型,RequestSuccess则是伸手成功后调用的闭包类型,RequestFailed则是请求战败要调用的闭包类型。那叁者是请求类对外沟通的桥梁。

其次个框中定义的是多少个闭包变量,用来将请求结果回调给调用者。RequestStart便是从头请求要调用的闭包类型,RequestSuccess则是请求成功后调用的闭包类型,RequestFailed则是请求退步要调用的闭包类型。那三者是请求类对外交换的桥梁。

 

 

其多个框则是呼吁方式的枚举,首要回顾GET、POST、PUT、DELETE,当然还留了CUSTOM()自定义的恢弘项目。在该枚举中的description总计属性负责将日前的枚举对象转变来其对于的字符串,具体如下所示:

其多个框则是呼吁格局的枚举,重要总结GET、POST、PUT、DELETE,当然还留了CUSTOM()自定义的扩展类型。在该枚举中的description总括属性负责将目前的枚举对象转变到其对于的字符串,具体如下所示:

(3)、创建user表

(3)、创建user表

  亚洲必赢手机入口 15

  亚洲必赢手机入口 16

创设完数据库后,接下去大家要创立二个user表用来开始展览测试。点击左下方的加号来创建新的数码库表,下方正是大家创设的数额库表的具体步骤以及实际的参数配置。如下所示:

开创完数据库后,接下去我们要开创多少个user表用来举行测试。点击左下方的加号来成立新的数额库表,下方正是我们创设的多少库表的具体步骤以及具体的参数配置。如下所示:

 

 

  亚洲必赢手机入口 17

  亚洲必赢手机入口 18

2、网络请求基类的创制

2、网络请求基类的创建

始建完user表后,大家必要往表里边增加壹些测试字段,下方便是我们抬高的有的字段。在大家的user表中有江湖多少个字段,id是主键,用户的唯壹标示。username-用户名,password-用户密码,create_time是创办时间,create_time的档次是光阴戳,而且私下认可值是当前时间。具体如下所示。

始建完user表后,我们需求往表里边增添1些测试字段,下方就是我们抬高的部分字段。在大家的user表中有江湖多少个字段,id是主键,用户的唯一标示。username-用户名,password-用户密码,create_time是创设时间,create_time的门类是时间戳,而且默许值是当今天子。具体如下所示。

接下去网络请求的基类,全部与网络请求相关的类都要三番五次自此类,下方的BaseRequest正是我们互连网请求的基类。该类相比较轻便,首要表明了地点定义的三个闭包类型的变量,然后提交了相应的构造器。具体如下所示。

接下去网络请求的基类,全体与互联网请求相关的类都要继续自此类,下方的BaseRequest正是大家互联网请求的基类。该类比较轻巧,重要评释了地方定义的五个闭包类型的变量,然后交到了相应的构造器。具体如下所示。

  亚洲必赢手机入口 19

  亚洲必赢手机入口 20

  亚洲必赢手机入口 21

  亚洲必赢手机入口 22

 

 

 

 

 

 

叁.网络请求类的卷入

三.互联网请求类的包装

2、Perfect数据库连接

二、Perfect数据库连接

接下去大家使用NSUENCORELSession来封装我们的网络请求类,下方的Request类正是大家封装的互连网请求类,该类承继自BaseRequest。下方是Request的片段代码,下方每一种方法对应着GET、POST、PUT等请求,能够结合者REST一同利用。在种种具体请求的方法中会调用sessionDataTaskRequest()方法。会给这几个方法传入不相同的请求方式以及路线和参数。稍后大家会给出sessionDataTaskRequest()方法的切实落到实处,sessionDataTaskRequest()方法在那之中就利用了NSU奥德赛LSession相关的内容提倡了互联网请求,具体请看下方对sessionDataTaskRequest()方法的详细介绍。

接下去我们利用NSU奔驰G级LSession来封装大家的网络请求类,下方的Request类正是大家封装的互联网请求类,该类承接自BaseRequest。下方是Request的部分代码,下方每种方法对应着GET、POST、PUT等请求,能够结合者REST一齐使用。在种种具体请求的不二诀窍中会调用sessionDataTaskRequest()方法。会给那么些主意传入不一样的请求格局以及路线和参数。稍后我们会给出sessionDataTaskRequest()方法的求实贯彻,sessionDataTaskRequest()方法在那之中就动用了NSURubiconLSession相关的始末提倡了网络请求,具体请看下方对sessionDataTaskRequest()方法的详细介绍。

万事俱备只欠东风,下面准备完MySQL数据库后,我们将在初叶开始展览Perfect框架连接数据库的剧情了。

齐全只欠东风,下面准备完MySQL数据库后,大家将在起来展开Perfect框架连接数据库的内容了。

  亚洲必赢手机入口 23

  亚洲必赢手机入口 24

1.引进正视库

一.引入注重库

尘寰这么些代码段正是sessionDataTaskRequest()方法的总体结构,首先大家依照函数的乞求路线和参数拼接ULANDL字符串,也正是第多个框中的部分。在该部分中的query()函数是将参数举行U猎豹CS6L编码转换,这么些函数是从AlamoFire框架中摘过来的。然后创立请求用的U凯雷德LRequest对象。最终是开创Session对象发起DataTask职务了。当然请求的结果是在completionHandler闭包中开始展览拍卖,稍后会付出completionHandler闭包中的处理格局。

人尘凡这几个代码段正是sessionDataTaskRequest()方法的欧洲经济共同体布局,首先我们依照函数的伏乞路线和参数拼接U奥迪Q5L字符串,也正是首先个框中的部分。在该有的中的query()函数是将参数实行U途睿欧L编码调换,那么些函数是从AlamoFire框架中摘过来的。然后创建请求用的U翼虎LRequest对象。最终是开创Session对象发起DataTask职责了。当然请求的结果是在completionHandler闭包中打开始拍片卖,稍后会提交completionHandler闭包中的处理情势。

遵循惯例,Perfect框架连接数据库照旧供给包的支持。首先大家须要引进操作MySQL相关的包。

服从惯例,Perfect框架连接数据库仍旧亟待包的支撑。首先我们需求引进操作MySQL相关的包。

  亚洲必赢手机入口 25

  亚洲必赢手机入口 26

 //MySql数据库注重包

.Package(url: “”,
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()闭包,如下所示:

俗尘是增添完上述的依赖包后,重新张开编写翻译的结果:

凡间是增多完上述的重视包后,重新打开编写翻译的结果:

  亚洲必赢手机入口 27

  亚洲必赢手机入口 28

  亚洲必赢手机入口 29

  亚洲必赢手机入口 30

迄今我们iOS客户端的互联网请求部分就封装完了,其余实际作业逻辑的互联网请求调用上述的Request类就能够,稍后会用到Request。

从这之后大家iOS客户端的网络请求部分就封装完了,其余实际作业逻辑的网络请求调用上述的Request类就可以,稍后会用到Request。

 

 

 

 

2、数据库连接

二、数据库连接

叁、登入注册模块的支出

三、登6注册模块的开辟

人尘寰代码段中的MySQLConnnet类就肩负数据库的延续并且选用相应的数据库。下方是MySQLConnnet类的全体布局,host,port,user,password都是只读的乘除属性,负责安排连接数据库的参数。而mysql属性正是接连数据库后的操作句柄。下方首要有多少个办法,叁个是连连数据库的秘诀connectDataBase()和抉择数据库的法门selectDataBase()。MySQLConnnet类对外是以单例的款式存在的,不过对外暴漏的不是MySQLConnnet类的靶子,而是MySQL类的对象。

尘间代码段中的MySQLConnnet类就承受数据库的连日并且采用相应的数据库。下方是MySQLConnnet类的欧洲经济共同体布局,host,port,user,password都以只读的估测计算属性,负责安顿连接数据库的参数。而mysql属性就是连接数据库后的操作句柄。下方首要有八个方法,1个是接二连三数据库的格局connectDataBase()和抉择数据库的方法selectDataBase()。MySQLConnnet类对外是以单例的款型存在的,但是对外暴漏的不是MySQLConnnet类的目的,而是MySQL类的目的。

下面的底子工作完成后,接下去大家将要来做大家相应的政工模块了。首先大家来进行登陆注册模块的支出工作。
首先付诸服务端相应模块的代码,然后在交付相应模块的iOS端的达成。关于斯维夫特三.0连接和操作MySQL的详实内容请参见上1篇博客《斯威夫特三.0服务端开拓(四)
MySQL数据库的接连与操作》,数据库的连天在本有的就不做过多废话了。

下边包车型大巴根基工作结束后,接下去大家将在来做大家相应的事务模块了。首先大家来开始展览登入注册模块的支出工作。
首先付诸服务端相应模块的代码,然后在付出相应模块的iOS端的达成。关于斯维夫特3.0连接和操作MySQL的事无巨细内容请参见上一篇博客《斯威夫特三.0服务端开辟(4)
MySQL数据库的连年与操作》,数据库的接二连三在本有的就不做过多废话了。

  亚洲必赢手机入口 31

  亚洲必赢手机入口 32

1、服务端代码

1、服务端代码

接下去提交具体的代码达成,下方就是MySQLConnnet类的单例和私家构造器。具体贯彻如下所示:

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

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

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

  亚洲必赢手机入口 33

  亚洲必赢手机入口 34

红尘代码是用户登入照旧注册的第二步,通过用户名来查询用户信息,从而来推断该用户是还是不是注册,假使未注册则去注册,若是注册过就去登入。假诺查询成功,那么就将查询的用户ID和UserName重返给客户端。用户登入的代码和下方大致,正是经过Select语句来合作该用户名的密码是或不是与用户输入的同样,在此就不做过多废话了。

俗尘代码是用户登入仍旧注册的第一步,通过用户名来查询用户音讯,从而来决断该用户是还是不是注册,要是未注册则去注册,借使注册过就去登陆。假如查询成功,那么就将查询的用户ID和UserName重临给客户端。用户登入的代码和下方差不离,就是通过Select语句来合营该用户名的密码是不是与用户输入的一致,在此就不做过多废话了。

尘寰是数据库的连日,大旨语句便是下方红框中的内容。首要依旧调用MySQL类中的connect()方法,在调用该措施时传出相应的参数就能够。纵然总是退步了会回到相应的errorMessage。具体代码如下所示:

人间是数据库的总是,大旨语句正是下方红框中的内容。重要还是调用MySQL类中的connect()方法,在调用该措施时传出相应的参数就能够。纵然老是失利了会再次来到相应的errorMessage。具体代码如下所示:

  亚洲必赢手机入口 35

  亚洲必赢手机入口 36

  亚洲必赢手机入口 37

  亚洲必赢手机入口 38

(2)、用户注册

(二)、用户注册

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

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

江湖正是用户注册是调用的接口落成,重固然插入相应的用户消息,具体如下所示:

人间就是用户注册是调用的接口达成,主固然插入相应的用户消息,具体如下所示:

  亚洲必赢手机入口 39

  亚洲必赢手机入口 40

  亚洲必赢手机入口 41

  亚洲必赢手机入口 42

 

 

上边这几个代码写完后,配置完相应的路由调用上述办法,大家的服务端代码就完事了。具体路由的安排因为篇幅有限,本篇博客就不做过多废话了。

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

 

 

 

 

叁、数据库操作

叁、数据库操作

二、iOS客户端代码完毕

贰、iOS客户端代码完结

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

接下去大家就要调用下面的数据库操作类类操作实际数据库中的表了。在首先有个别我们已经创办好了test数据库,并且创设好了对应的user表。接下来大家将在动用斯威夫特代码来对User表举行增加和删除改查操作了。

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

接下去大家来促成iOS客户端的登入和登记的代码,下方正是登入依然注册的相关UI。用户输入用户后,点击下一步,会调用后台接口推断用户是或不是注册过,要是已注册输入密码登入,要是未注册就输入密码注册和登6。左边的UIViewController是共用的,七个页面,二个让用户输入用户名,1个则承担接收密码。UI相比较轻巧,如下所示:

 

 

  亚洲必赢手机入口 43

  亚洲必赢手机入口 44

壹.创设数据库操作基类

壹.营造数据库操作基类

 看完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。具体如下所示。

  亚洲必赢手机入口 45

  亚洲必赢手机入口 46

  亚洲必赢手机入口 47

  亚洲必赢手机入口 48

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

在我们相应的ViewController中会调用上述的艺术,下方便是用户在输入相应的用户消息后点击next所调用的不二等秘书技。通过相应的闭包事件,最后将互联网请求的结果回调到了VC中。

 

 

  亚洲必赢手机入口 49

  亚洲必赢手机入口 50

二.营造user表的操作类

二.营造user表的操作类

迄今截止大家iOS客户端的登录就贯彻得了了。
其余的代码和方面包车型地铁思路类似,在此就不做过多废话了。

由来大家iOS客户端的登入就完结完工了。
别的的代码和方面包车型地铁思路类似,在此就不做过多废话了。

江湖的UserOperator类就是大家创立的尤其来操作user表的类,主要是对user表的增加和删除改查操作。insertUserInfo()负责“增”,即插入用户音信。deleteUser()负责“删”,通过userId来删除用户。updateUserInfo()就承担“改”,更新用户音讯。queryUserInfo()就承受“查”了,负责从user表中经过用户名来查询音信。

人世间的UserOperator类正是大家创设的更加来操作user表的类,首假如对user表的增加和删除改查操作。insertUserInfo()负责“增”,即插入用户音信。deleteUser()负责“删”,通过userId来删除用户。updateUserInfo()就承担“改”,更新用户音信。queryUserInfo()就承受“查”了,负责从user表中经过用户名来查询音讯。

 

 

  亚洲必赢手机入口 51

  亚洲必赢手机入口 52

本篇博客,就先到此时吧,其余代码和上述的思路平昔,依照上述的思路去贯彻笔记的增删改查就能够,在此就不多废话了。完整德姆o请移步github相关链接。

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

 

 

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

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

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

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

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

世间正是插入数据的现实性代码,第贰个框正是大家要推行的SQL语句,然后利用mysql操作句柄调用query()方法进行SQL语句的施行。推行成功后,查询插入的数码并赶回查询的结果,如下所示。

  亚洲必赢手机入口 53

  亚洲必赢手机入口 54

 

 

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

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

接下去我们来看一下删减的具体操作,下方截图正是deleteUserInfo()的切切实实贯彻。下方的主意与插入差不离,先给出delete的SQL语句,然后再调用mysql操作句柄的query()操作,具体代码如下所示:

接下去大家来看一下删减的具体操作,下方截图正是deleteUserInfo()的现实性落成。下方的办法与插入大概,先给出delete的SQL语句,然后再调用mysql操作句柄的query()操作,具体代码如下所示:

  亚洲必赢手机入口 55

  亚洲必赢手机入口 56

 

 

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

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

凡间是翻新用户新闻的代码,与上三个代码大致,只可是是通过mysql操作句柄调用query()方法实施的是update的SQL语句。更新时大家选用了MySQL的now()函数来更新时间,具体代码如下所示。

人尘世是创新用户新闻的代码,与上三个代码大概,只可是是经过mysql操作句柄调用query()方法实施的是update的SQL语句。更新时大家接纳了MySQL的now()函数来更新时间,具体代码如下所示。

  亚洲必赢手机入口 57

  亚洲必赢手机入口 58

 

 

(4)、queryUserInfo—-查询

(4)、queryUserInfo—-查询

跟着大家来落到实处一下询问用户音讯的代码。下方正是查询用户音信的代码,查询的代码稍微复杂1些,在奉行完询问的SQL语句后,还亟需价格查询结果开始展览仓储。在蕴藏后,会再次回到查询的结果results。大家可以经过results的forEachRow()函数的随从闭包来得到每行的数额。在抽取数据后,将其调换到相应的字典,然后将存有询问结果的字典存入到responseJson中,然后将responseJson调换为json字符串再次回到给用户就可以。具体做法如下所示。

随后大家来兑现一下查询用户音信的代码。下方正是询问用户消息的代码,查询的代码稍微复杂壹些,在试行完询问的SQL语句后,还需索要的价格格查询结果开始展览仓库储存。在存款和储蓄后,会回去查询的结果results。大家得以因而results的forEachRow()函数的尾随闭包来取得每行的数量。在收取数据后,将其调换来相应的字典,然后将存有查询结果的字典存入到responseJson中,然后将responseJson转变为json字符串再次来到给用户就能够。具体做法如下所示。

  亚洲必赢手机入口 59

  亚洲必赢手机入口 60

 

 

 

 

四、测试用例

4、测试用例

上边我们写完操作User表的照应的情势后接下去大家就来测试壹些有血有肉的结果。为了便利测试,大家配备五个路由专门用来对User表的增加和删除改成举办操作。各种路由对应着方面每一种方法。本有的就交付相应的测试用例。为了有利于测试,我们在路由布署时,钦点请求方法全是GET请求。

地方大家写完操作User表的应和的法子后接下去大家就来测试1些切实可行的结果。为了方便测试,我们配备5个路由特别用来对User表的增加和删除改成开始展览操作。每一个路由对应着上边各个方法。本有的就交给相应的测试用例。为了方便测试,大家在路由安插时,内定请求方法全是GET请求。

 

 

1、对“增”的测试

1、对“增”的测试

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

接下去我们对InsertUserInfo()的的测试,首先大家加多一个请求格局为GET的“/create”路由,然后拿走用户提交的userName和password。获取实现后,调用UserOperator对象的insertUserInfo()方法将数据插入到数据库中。当然插入后,会跟着将数据查询出来再次来到给客户端的。

  亚洲必赢手机入口 61

  亚洲必赢手机入口 62

大家在浏览器里拜访“

作者们在浏览器里拜访“

  亚洲必赢手机入口 63

  亚洲必赢手机入口 64

 

 

2.对“改”的测试

2.对“改”的测试

接下去大家将在测试一下updateUserInfo()那么些函数,该有的与上述的代码差不离,也是急需配备二个伸手形式为GET的换代路由“/update”。然后在该路由中获得请求参数,然后调用updateUserInfo()那些函数就能够。具体代码就不做过多废话了,直接看下方的测试结果吧。通过结果简单看出,用户名被改产生正确的Hello了,而且时间也被更新了。

接下去大家就要测试一下updateUserInfo()那一个函数,该有的与上述的代码差不离,也是内需安顿3个伸手格局为GET的换代路由“/update”。然后在该路由中获取请求参数,然后调用updateUserInfo()这几个函数就可以。具体代码就不做过多废话了,直接看下方的测试结果吗。通过结果简单看出,用户名被退换成正确的Hello了,而且时间也被更新了。

  亚洲必赢手机入口 65

  亚洲必赢手机入口 66

 

 

剩下的查与删,和上边包车型客车演示差不离,在此就不做过多废话了,我们的MySQL数据库的操作就先提及这吗。官方上还介绍了部分数据库的O纳瓦拉M操作,个中就有MySQL的O奥迪Q5M操作,能够简化一些数目操作。这点就留给读者本身去看吗。

剩下的查与删,和下面的演示大约,在此就不做过多废话了,大家的MySQL数据库的操作就先提及那吗。官方上还介绍了部分数据库的OSportageM操作,个中就有MySQL的O途观M操作,能够简化一些多少操作。那点就留下读者本人去看呢。

 

 

发表评论

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

网站地图xml地图