本篇部落格我們來聊聊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資料庫的。具體啟動方式如下。
2.使用Sequel Pro連接配接操作資料庫
(1)、連接配接MySQL資料庫
打開Sequel Pro,輸入你MySQL的主機名,使用者名以及密碼。具體連接配接那個資料庫可以不選,然後填上具體的端口,預設是3306。點選連接配接即可。具體如下所示:
(2)、建立測試資料庫
然後點選添加資料庫,建立新的資料庫即可,下方我們建立的是test資料庫,編碼方式用的是utf8。如下所示。
(3)、建立user表
建立完資料庫後,接下來我們要建立一個user表用來進行測試。點選左下方的加号來建立新的資料庫表,下方就是我們建立的資料庫表的具體步驟以及具體的參數配置。如下所示:
二、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.建構資料庫操作基類
下方截圖就是我們建構的資料庫操作的基類,所有資料庫表的操作都要繼承自該基類,在基類中定義了操作資料庫的名字dataBaseName,MySQL操作句柄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。我們可以通過results的forEachRow()函數的尾随閉包來擷取每行的資料。在取出資料後,将其轉換成相應的字典,然後将存有查詢結果的字典存入到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操作,可以簡化一些資料操作。這一點就留給讀者自己去看吧。
作者:青玉伏案
出處:http://www.cnblogs.com/ludashi/
本文版權歸作者和共部落格園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接配接,否則保留追究法律責任的權利。
如果文中有什麼錯誤,歡迎指出。以免更多的人被誤導。
收履歷:某網際網路公司,招聘iOS/Android靠譜工程師,入職後,可内部聯系樓主,有小禮品贈送,有意者可郵箱投遞履歷:[email protected]