1. 程式人生 > >Swift3.0服務端開發(四) MySQL資料庫的連線與操作

Swift3.0服務端開發(四) MySQL資料庫的連線與操作

本篇部落格我們來聊聊MySQL資料庫的連線與操作。如果你本地沒有MySQL資料庫的話,需要你先安裝MySQL資料庫。在Mac OS中使用brew包管理器進行MySQL的安裝是及其方便的。安裝MySQL的命令為:brew install mysql。本篇部落格我們就要使用Perfect框架來連線操作資料庫了,首先我們需要建立一個測試資料庫,然後在測試資料庫中建立一張測試表用來增刪改查操作。

在部落格的開頭呢,先來推薦一款Mac上比較好用又免費的MySQL視覺化管理工具Sequel Pro。這款工具用的是相當的順手呢,應用的圖示如下所示:

  

一、測試資料庫的建立

本部分與Perfect框架無關,完全是MySQL

的內容,是Perfect操作資料庫的準備工作。前提是你已經安裝好了MySQL資料庫了。

1、啟動MySQL的伺服器

這一點雖然簡單,但不要忘記啟動你的MySQL服務呢,不然Sequel Pro是無法連線你的MySQL資料庫的。具體啟動方式如下。

  

啟動是start,那麼關閉MySQL資料庫就是stop了,如下所示:

  

2.使用Sequel Pro連線操作資料庫

(1)、連線MySQL資料庫

開啟Sequel Pro,輸入你MySQL的主機名,使用者名稱以及密碼。具體連線那個資料庫可以不選,然後填上具體的埠,預設是3306。點選連線即可。具體如下所示:

  

(2)、建立測試資料庫

然後點選新增資料庫,建立新的資料庫即可,下方我們建立的是test資料庫

,編碼方式用的是utf8。如下所示。

  

(3)、建立user表

建立完資料庫後,接下來我們要建立一個user表用來進行測試。點選左下方的加號來建立新的資料庫表,下方就是我們建立的資料庫表的具體步驟以及具體的引數配置。如下所示:

  

建立完user表後,我們需要往表裡邊新增一些測試欄位,下方就是我們新增的一些欄位。在我們的user表中有下方四個欄位,id是主鍵,使用者的唯一標示。username-使用者名稱,password-使用者密碼,create_time是建立時間,create_time的型別是時間戳,而且預設值是當前時間。具體如下所示。

  

二、Perfect資料庫連線

萬事俱備只欠東風,上面準備完MySQL

資料庫後,我們就要開始進行Perfect框架連線資料庫的內容了。

1.引入依賴庫

依照慣例,Perfect框架連線資料庫依然需要包的支援。首先我們需要引入操作MySQL相關的包。

 //MySql資料庫依賴包

.Package(url: "https://github.com/PerfectlySoft/Perfect-MySQL.git",
majorVersion: 2, minor: 0)

下方是新增完上述的依賴包後,重新進行編譯的結果:

  

2、資料庫連線

下方程式碼段中的MySQLConnnet類就負責資料庫的連線並且選擇相應的資料庫。下方是MySQLConnnet類的整體結構,host,port,user,password都是隻讀的計算屬性,負責配置連線資料庫的引數。而mysql屬性就是連線資料庫後的操作控制代碼。下方主要有兩個方法,一個是連線資料庫的方法connectDataBase()和選擇資料庫的方法selectDataBase()MySQLConnnet類對外是以單例的形式存在的,不過對外暴漏的不是MySQLConnnet類的物件,而是MySQL類的物件。

  

接下來給出具體的程式碼實現,下方就是MySQLConnnet類的單例和私有構造器。具體實現如下所示:

  

下方是資料庫的連線,核心語句就是下方紅框中的內容。主要還是呼叫MySQL類中的connect()方法,在呼叫該方法時傳入相應的引數即可。如果連線失敗了會返回相應的errorMessage。具體程式碼如下所示:

  

連線完資料庫後,然後是選擇資料庫,下方是選擇資料庫的程式碼。使用mysql控制代碼呼叫selectDataBase()方法,具體程式碼如下所示:

  

三、資料庫操作

接下來我們就要呼叫上面的資料庫操作類類操作具體資料庫中的表了。在第一部分我們已經建立好了test資料庫,並且建立好了相應的user表。接下來我們就要使用Swift程式碼來對User表進行增刪改查操作了。

1.構建資料庫操作基類

下方截圖就是我們構建的資料庫操作的基類,所有資料庫表的操作都要繼承自該基類,在基類中定義了操作資料庫的名字dataBaseNameMySQL操作控制代碼mysql,以及響應json的格式responsJson。具體如下所示。

  

2.構建user表的操作類

下方的UserOperator類就是我們建立的專門來操作user表的類,主要是對user表的增刪改查操作。insertUserInfo()負責“增”,即插入使用者資訊。deleteUser()負責“刪”,通過userId來刪除使用者。updateUserInfo()就負責“改”,更新使用者資訊。queryUserInfo()就負責“查”了,負責從user表中通過使用者名稱來查詢資訊。

  

(1)、InsertUserInfo()----"增"

下方就是插入資料的具體程式碼,第一個框就是我們要執行的SQL語句,然後使用mysql操作控制代碼呼叫query()方法進行SQL語句的執行。執行成功後,查詢插入的資料並返回查詢的結果,如下所示。

  

(2)、deleteUserInfo()----"刪"

接下來我們來看一下刪除的具體操作,下方截圖就是deleteUserInfo()的具體實現。下方的方法與插入差不多,先給出delete的SQL語句,然後再呼叫mysql操作控制代碼的query()操作,具體程式碼如下所示:

  

(3)、updateUserInfo----更新使用者資訊

下方是更新使用者資訊的程式碼,與上兩個程式碼差不多,只不過是通過mysql操作控制代碼呼叫query()方法執行的是update的SQL語句。更新時我們使用了MySQL的now()函式來更新時間,具體程式碼如下所示。

  

(4)、queryUserInfo----查詢

接著我們來實現一下查詢使用者資訊的程式碼。下方就是查詢使用者資訊的程式碼,查詢的程式碼稍微複雜一些,在執行完查詢的SQL語句後,還需要價格查詢結果進行儲存。在儲存後,會返回查詢的結果results。我們可以通過resultsforEachRow()函式的尾隨閉包來獲取每行的資料。在取出資料後,將其轉換成相應的字典,然後將存有查詢結果的字典存入到responseJson中,然後將responseJson轉換為json字串返回給使用者即可。具體做法如下所示。

  

四、測試用例

上面我們寫完操作User表的相應的方法後接下來我們就來測試一些具體的結果。為了方便測試,我們配置4個路由專門用來對User表的增刪改成進行操作。每個路由對應著上面每個方法。本部分就給出相應的測試用例。為了方便測試,我們在路由配置時,指定請求方法全是GET請求。

1、對“增”的測試

接下來我們對InsertUserInfo()的的測試,首先我們新增一個請求方式為GET的“/create”路由,然後獲取使用者提交的userName和password。獲取完畢後,呼叫UserOperator物件的insertUserInfo()方法將資料插入到資料庫中。當然插入後,會接著將資料查詢出來返回給客戶端的。

  

我們在瀏覽器裡訪問“http://127.0.0.1:8181/create?userName=Hellow&password=1234”這個地址,就會將使用者Hellow,密碼為1234的使用者插入到資料庫。當然我們故意將Hello寫成了Hellow稍後進行更新。下方就是具體的操作結果:

  

2.對“改”的測試

接下來我們就要測試一下updateUserInfo()這個函式,該部分與上述的程式碼差不多,也是需要配置一個請求方式為GET的更新路由“/update”。然後在該路由中獲取請求引數,然後呼叫updateUserInfo()這個函式即可。具體程式碼就不做過多贅述了,直接看下方的測試結果吧。通過結果不難看出,使用者名稱被修改成正確的Hello了,而且時間也被更新了。

  

剩下的查與刪,和上方的示例差不多,在此就不做過多贅述了,我們的MySQL資料庫的操作就先聊到這吧。官方上還介紹了一些資料庫的ORM操作,其中就有MySQL的ORM操作,可以簡化一些資料操作。這一點就留給讀者自己去看吧。