在本博客中,我們將討論MySQL數(shù)據(jù)庫(kù)的連接和操作。如果本地沒有MySQL數(shù)據(jù)庫(kù),則必須先安裝MySQL數(shù)據(jù)庫(kù)。
在Mac OS中使用brew包管理器進(jìn)行MySQL的安裝是及其方便的。安裝MySQL的命令為:brew install mysql。本篇博客我們就要使用Perfect框架來(lái)連接操作數(shù)據(jù)庫(kù)了,首先我們需要?jiǎng)?chuàng)建一個(gè)測(cè)試數(shù)據(jù)庫(kù),然后在測(cè)試數(shù)據(jù)庫(kù)中創(chuàng)建一張測(cè)試表用來(lái)增刪改查操作。在博客的開頭呢,先來(lái)推薦一款Mac上比較好用又免費(fèi)的MySQL可視化管理工具Sequel Pro。這款工具用的是相當(dāng)?shù)捻樖帜?,?yīng)用的圖標(biāo)如下所示:
一、測(cè)試數(shù)據(jù)庫(kù)的創(chuàng)建
本部分與Perfect框架無(wú)關(guān),完全是MySQL的內(nèi)容,是Perfect操作數(shù)據(jù)庫(kù)的準(zhǔn)備工作。前提是你已經(jīng)安裝好了MySQL數(shù)據(jù)庫(kù)了。
1、啟動(dòng)MySQL的服務(wù)器
這一點(diǎn)雖然簡(jiǎn)單,但不要忘記啟動(dòng)你的MySQL服務(wù)呢,不然Sequel Pro是無(wú)法連接你的MySQL數(shù)據(jù)庫(kù)的。具體啟動(dòng)方式如下。
啟動(dòng)是start,那么關(guān)閉MySQL數(shù)據(jù)庫(kù)就是stop了,如下所示:
2.使用Sequel Pro連接操作數(shù)據(jù)庫(kù)
(1)、連接MySQL數(shù)據(jù)庫(kù)
打開Sequel Pro,輸入你MySQL的主機(jī)名,用戶名以及密碼。具體連接那個(gè)數(shù)據(jù)庫(kù)可以不選,然后填上具體的端口,默認(rèn)是3306。點(diǎn)擊連接即可。具體如下所示:
(2)、創(chuàng)建測(cè)試數(shù)據(jù)庫(kù)
然后點(diǎn)擊添加數(shù)據(jù)庫(kù),創(chuàng)建新的數(shù)據(jù)庫(kù)即可,下方我們創(chuàng)建的是test數(shù)據(jù)庫(kù),編碼方式用的是utf8。如下所示。
(3)、創(chuàng)建user表
創(chuàng)建完數(shù)據(jù)庫(kù)后,接下來(lái)我們要?jiǎng)?chuàng)建一個(gè)user表用來(lái)進(jìn)行測(cè)試。點(diǎn)擊左下方的加號(hào)來(lái)創(chuàng)建新的數(shù)據(jù)庫(kù)表,下方就是我們創(chuàng)建的數(shù)據(jù)庫(kù)表的具體步驟以及具體的參數(shù)配置。如下所示:
創(chuàng)建完user表后,我們需要往表里邊添加一些測(cè)試字段,下方就是我們添加的一些字段。在我們的user表中有下方四個(gè)字段,id是主鍵,用戶的唯一標(biāo)示。username-用戶名,password-用戶密碼,create_time是創(chuàng)建時(shí)間,create_time的類型是時(shí)間戳,而且默認(rèn)值是當(dāng)前時(shí)間。具體如下所示。
二、Perfect數(shù)據(jù)庫(kù)連接
萬(wàn)事俱備只欠東風(fēng),上面準(zhǔn)備完MySQL數(shù)據(jù)庫(kù)后,我們就要開始進(jìn)行Perfect框架連接數(shù)據(jù)庫(kù)的內(nèi)容了。
1.引入依賴庫(kù)
依照慣例,Perfect框架連接數(shù)據(jù)庫(kù)依然需要包的支持。首先我們需要引入操作MySQL相關(guān)的包。
//MySql數(shù)據(jù)庫(kù)依賴包
.Package(url: ";,
majorVersion: 2, minor: 0)
下方是添加完上述的依賴包后,重新進(jìn)行編譯的結(jié)果:
2、數(shù)據(jù)庫(kù)連接
下方代碼段中的MySQLConnnet類就負(fù)責(zé)數(shù)據(jù)庫(kù)的連接并且選擇相應(yīng)的數(shù)據(jù)庫(kù)。下方是MySQLConnnet類的整體結(jié)構(gòu),host,port,user,password都是只讀的計(jì)算屬性,負(fù)責(zé)配置連接數(shù)據(jù)庫(kù)的參數(shù)。而mysql屬性就是連接數(shù)據(jù)庫(kù)后的操作句柄。下方主要有兩個(gè)方法,一個(gè)是連接數(shù)據(jù)庫(kù)的方法connectDataBase()和選擇數(shù)據(jù)庫(kù)的方法selectDataBase()。MySQLConnnet類對(duì)外是以單例的形式存在的,不過(guò)對(duì)外暴漏的不是MySQLConnnet類的對(duì)象,而是MySQL類的對(duì)象。
接下來(lái)給出具體的代碼實(shí)現(xiàn),下方就是MySQLConnnet類的單例和私有構(gòu)造器。具體實(shí)現(xiàn)如下所示:
下方是數(shù)據(jù)庫(kù)的連接,核心語(yǔ)句就是下方紅框中的內(nèi)容。主要還是調(diào)用MySQL類中的connect()方法,在調(diào)用該方法時(shí)傳入相應(yīng)的參數(shù)即可。如果連接失敗了會(huì)返回相應(yīng)的errorMessage。具體代碼如下所示:
連接完數(shù)據(jù)庫(kù)后,然后是選擇數(shù)據(jù)庫(kù),下方是選擇數(shù)據(jù)庫(kù)的代碼。使用mysql句柄調(diào)用selectDataBase()方法,具體代碼如下所示:
三、數(shù)據(jù)庫(kù)操作
接下來(lái)我們就要調(diào)用上面的數(shù)據(jù)庫(kù)操作類類操作具體數(shù)據(jù)庫(kù)中的表了。在第一部分我們已經(jīng)創(chuàng)建好了test數(shù)據(jù)庫(kù),并且創(chuàng)建好了相應(yīng)的user表。接下來(lái)我們就要使用Swift代碼來(lái)對(duì)User表進(jìn)行增刪改查操作了。
1.構(gòu)建數(shù)據(jù)庫(kù)操作基類
下方截圖就是我們構(gòu)建的數(shù)據(jù)庫(kù)操作的基類,所有數(shù)據(jù)庫(kù)表的操作都要繼承自該基類,在基類中定義了操作數(shù)據(jù)庫(kù)的名字dataBaseName,MySQL操作句柄mysql,以及響應(yīng)json的格式responsJson。具體如下所示。
2.構(gòu)建user表的操作類
下方的UserOperator類就是我們創(chuàng)建的專門來(lái)操作user表的類,主要是對(duì)user表的增刪改查操作。insertUserInfo()負(fù)責(zé)“增”,即插入用戶信息。deleteUser()負(fù)責(zé)“刪”,通過(guò)userId來(lái)刪除用戶。updateUserInfo()就負(fù)責(zé)“改”,更新用戶信息。queryUserInfo()就負(fù)責(zé)“查”了,負(fù)責(zé)從user表中通過(guò)用戶名來(lái)查詢信息。
(1)、InsertUserInfo()----"增"
下方就是插入數(shù)據(jù)的具體代碼,第一個(gè)框就是我們要執(zhí)行的SQL語(yǔ)句,然后使用mysql操作句柄調(diào)用query()方法進(jìn)行SQL語(yǔ)句的執(zhí)行。執(zhí)行成功后,查詢插入的數(shù)據(jù)并返回查詢的結(jié)果,如下所示。
(2)、deleteUserInfo()----"刪"
接下來(lái)我們來(lái)看一下刪除的具體操作,下方截圖就是deleteUserInfo()的具體實(shí)現(xiàn)。下方的方法與插入差不多,先給出delete的SQL語(yǔ)句,然后再調(diào)用mysql操作句柄的query()操作,具體代碼如下所示:
(3)、updateUserInfo----更新用戶信息
下方是更新用戶信息的代碼,與上兩個(gè)代碼差不多,只不過(guò)是通過(guò)mysql操作句柄調(diào)用query()方法執(zhí)行的是update的SQL語(yǔ)句。更新時(shí)我們使用了MySQL的now()函數(shù)來(lái)更新時(shí)間,具體代碼如下所示。
(4)、queryUserInfo----查詢
接著我們來(lái)實(shí)現(xiàn)一下查詢用戶信息的代碼。下方就是查詢用戶信息的代碼,查詢的代碼稍微復(fù)雜一些,在執(zhí)行完查詢的SQL語(yǔ)句后,還需要價(jià)格查詢結(jié)果進(jìn)行存儲(chǔ)。在存儲(chǔ)后,會(huì)返回查詢的結(jié)果results。我們可以通過(guò)results的forEachRow()函數(shù)的尾隨閉包來(lái)獲取每行的數(shù)據(jù)。在取出數(shù)據(jù)后,將其轉(zhuǎn)換成相應(yīng)的字典,然后將存有查詢結(jié)果的字典存入到responseJson中,然后將responseJson轉(zhuǎn)換為json字符串返回給用戶即可。具體做法如下所示。
四、測(cè)試用例
上面我們寫完操作User表的相應(yīng)的方法后接下來(lái)我們就來(lái)測(cè)試一些具體的結(jié)果。為了方便測(cè)試,我們配置4個(gè)路由專門用來(lái)對(duì)User表的增刪改成進(jìn)行操作。每個(gè)路由對(duì)應(yīng)著上面每個(gè)方法。本部分就給出相應(yīng)的測(cè)試用例。為了方便測(cè)試,我們?cè)诼酚膳渲脮r(shí),指定請(qǐng)求方法全是GET請(qǐng)求。
1、對(duì)“增”的測(cè)試
接下來(lái)我們對(duì)InsertUserInfo()的的測(cè)試,首先我們添加一個(gè)請(qǐng)求方式為GET的“/create”路由,然后獲取用戶提交的userName和password。獲取完畢后,調(diào)用UserOperator對(duì)象的insertUserInfo()方法將數(shù)據(jù)插入到數(shù)據(jù)庫(kù)中。當(dāng)然插入后,會(huì)接著將數(shù)據(jù)查詢出來(lái)返回給客戶端的。
我們?cè)跒g覽器里訪問“;password=1234”這個(gè)地址,就會(huì)將用戶Hellow,密碼為1234的用戶插入到數(shù)據(jù)庫(kù)。當(dāng)然我們故意將Hello寫成了Hellow稍后進(jìn)行更新。下方就是具體的操作結(jié)果:
2.對(duì)“改”的測(cè)試
接下來(lái)我們就要測(cè)試一下updateUserInfo()這個(gè)函數(shù),該部分與上述的代碼差不多,也是需要配置一個(gè)請(qǐng)求方式為GET的更新路由“/update”。然后在該路由中獲取請(qǐng)求參數(shù),然后調(diào)用updateUserInfo()這個(gè)函數(shù)即可。具體代碼就不做過(guò)多贅述了,直接看下方的測(cè)試結(jié)果吧。通過(guò)結(jié)果不難看出,用戶名被修改成正確的Hello了,而且時(shí)間也被更新了。
剩下的查與刪,和上方的示例差不多,在此就不做過(guò)多贅述了,我們的MySQL數(shù)據(jù)庫(kù)的操作就先聊到這吧。官方上還介紹了一些數(shù)據(jù)庫(kù)的ORM操作,其中就有MySQL的ORM操作,可以簡(jiǎn)化一些數(shù)據(jù)操作。這一點(diǎn)就留給讀者自己去看吧。
1.《.net如何連接mysql數(shù)據(jù)庫(kù)?我來(lái)告訴你答案Swift3.0服務(wù)端開發(fā)(四) MySQL數(shù)據(jù)庫(kù)連接與操作》援引自互聯(lián)網(wǎng),旨在傳遞更多網(wǎng)絡(luò)信息知識(shí),僅代表作者本人觀點(diǎn),與本網(wǎng)站無(wú)關(guān),侵刪請(qǐng)聯(lián)系頁(yè)腳下方聯(lián)系方式。
2.《.net如何連接mysql數(shù)據(jù)庫(kù)?我來(lái)告訴你答案Swift3.0服務(wù)端開發(fā)(四) MySQL數(shù)據(jù)庫(kù)連接與操作》僅供讀者參考,本網(wǎng)站未對(duì)該內(nèi)容進(jìn)行證實(shí),對(duì)其原創(chuàng)性、真實(shí)性、完整性、及時(shí)性不作任何保證。
3.文章轉(zhuǎn)載時(shí)請(qǐng)保留本站內(nèi)容來(lái)源地址,http://f99ss.com/gl/2078196.html