MySQL數(shù)據(jù)庫(kù)與ASP.NET如何強(qiáng)強(qiáng)聯(lián)手
由于富有競(jìng)爭(zhēng)力的價(jià)格和易于使用,MySQL在市場(chǎng)占有率方面逐步提升。開(kāi)放源代碼社區(qū)為了擴(kuò)展MySQL的使用范圍,開(kāi)發(fā)出了.Net框架(.NET Framework)中可以使用的數(shù)據(jù)庫(kù)連接器。我們就來(lái)學(xué)習(xí)一下如何在.Net應(yīng)用程序中使用MySQL。
和.NET的數(shù)據(jù)整合
MySQL 社區(qū)已經(jīng)開(kāi)發(fā)出了MySQL的數(shù)據(jù)接口,他提供了連接數(shù)據(jù)源和程序代碼的基本功能。在Windows平臺(tái)上,有如下的MySQL連接器:
* MySQL Connector/Net 1.0 (之前被稱為ByteFX.Data):是一個(gè)為MySQL設(shè)計(jì)的開(kāi)放源代碼.NET數(shù)據(jù)接口。它是完全用C#來(lái)開(kāi)發(fā)的,我們可以在在 MySQL.com網(wǎng)站上找到它。(注意:在本文的例子中,我們都會(huì)使用MySQL Connector/Net 1.0這個(gè)數(shù)據(jù)接口來(lái)連接數(shù)據(jù)庫(kù),利用Windows安裝程序即可輕易安裝它,它的代碼實(shí)例和文檔也包含其中。)
* MySQLDirect .NET Data Provider: 是一個(gè)由 Core Lab 開(kāi)發(fā)的商業(yè)數(shù)據(jù)接口。他的價(jià)格由購(gòu)買的許可證的類型決定,但是我們可以下載它的試用版。
如果你使用 Mono,那么在 Mono網(wǎng)站上可以找到PHP連接器的下載。如果你在Windows平臺(tái)上運(yùn)行Mono的話,你下載的連接器包含了安裝程序。如果不是的話,那就要根據(jù)你的操作系統(tǒng)的種類去下載合適的連接器了。
使用MySQL數(shù)據(jù)接口
安裝好MySQL的數(shù)據(jù)接口后,你必須在你的代碼中引入它才能使用。你可以使用 MySql.Data.MySqlClient這個(gè)名空間來(lái)連接 MySQL 服務(wù)器。在C#中,可以使用using語(yǔ)句來(lái)引入MySQL數(shù)據(jù)接口:
using MySql.Data.MySqlClient;
另外,你也可以在一個(gè)ASP.NET的網(wǎng)頁(yè)表單(Web Form)中通過(guò)使用導(dǎo)入(Import)指令來(lái)引入MySQL數(shù)據(jù)接口:
或者,你也可以在你的代碼里在使用這個(gè)名空間時(shí),寫全一個(gè)類的完整路徑,但是這樣的話會(huì)比使用Import指令來(lái)導(dǎo)入輸入更多的字符,浪費(fèi)更多的字節(jié)。指定了名空間后,我們就可以和MySQL數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)交互了。MySql.Data.MySqlClient這個(gè)名空間提供了許多用于處理MySQL數(shù)據(jù)的類。下面是這些類的一個(gè)樣本:
* MySqlConnection: 管理和 MySQL 服務(wù)器/數(shù)據(jù)庫(kù)的連接;
* MySqlDataAdapter: 一套用于填充DataSet對(duì)象和更新MySQL數(shù)據(jù)庫(kù)的命令和連接的集合;
* MySqlDataReader: 讓你能夠從一個(gè)MySQL數(shù)據(jù)庫(kù)讀取數(shù)據(jù)。它是一個(gè)單向的數(shù)據(jù)流;
* MySqlCommand: 提供向數(shù)據(jù)庫(kù)服務(wù)器發(fā)送指令的功能;
* MySqlException: 當(dāng)發(fā)生問(wèn)題時(shí)提供例外處理。
連接MySQL數(shù)據(jù)庫(kù)
使用MySQL數(shù)據(jù)庫(kù)的第一步是要通過(guò)MySQLConnection類和數(shù)據(jù)庫(kù)建立連接。通過(guò)一個(gè)連接字串,MySqlConnection 將會(huì)被實(shí)例化成一個(gè)示例。連接字符串將告訴代碼到哪里去找MySQL服務(wù)器以及其他一些選項(xiàng)。
一個(gè)連接字串告訴代碼使用指定的用戶名和密碼去連接一個(gè)名為MySQLTestServer的MySQL服務(wù)器,并進(jìn)入techrepublic數(shù)據(jù)庫(kù)。我在我的測(cè)試機(jī)上設(shè)定了允許匿名登陸(這樣的設(shè)定有非常大的安全漏洞,所以不建議你在生產(chǎn)服務(wù)器上也這么做),所以在范例中將會(huì)使用如下的連接字串:
"server=localhost; database=sitepoint;"
指定了連接字串后,MySqlConnection對(duì)象的Open方法就被調(diào)用并打開(kāi)連接。連接建立后,你就可以給MySQL數(shù)據(jù)庫(kù)發(fā)送命令或從數(shù)據(jù)庫(kù)獲得數(shù)據(jù)了。
ASP.NET和MySQL的組合
讓我們更深入的討論一下結(jié)合MySqlConnection類和其他的類來(lái)生成一個(gè)MySQL服務(wù)器上的數(shù)據(jù)庫(kù)列表。表 B列出了一個(gè)使用C#寫的ASP.NET的網(wǎng)頁(yè)表單。它建立了一個(gè)連接,接著給服務(wù)器下了一個(gè)指令(SHOW DATABASES),然后通過(guò)MySqlReader對(duì)象把結(jié)果顯示出來(lái)。
用 MySqlCommand 對(duì)象向MySQL服務(wù)器發(fā)送 SHOW DATABASES 命令和直接在 MySQL 管理工具中輸入這個(gè)命令得結(jié)果是一樣的。唯一的區(qū)別是,我們?cè)诖a中必須使用另一個(gè)對(duì)象來(lái)獲取結(jié)果集。MySqlDataReader 對(duì)象在獲取結(jié)果時(shí)被實(shí)例化(通過(guò) MySqlCommand 類的 ExecuteReader 方法)。MySqlDataReader 對(duì)象的 GetString 方法被用于通過(guò)ASP.NET的標(biāo)簽控制來(lái)顯示結(jié)果集中的數(shù)據(jù)。GetString 方法的指針0指定了顯示結(jié)果集的當(dāng)前行(在while循環(huán)中)的第一列數(shù)據(jù)。
Mono提示
如果你使用開(kāi)放源代碼的Mono開(kāi)發(fā)平臺(tái),例子中的代碼只需要做小小的改動(dòng)就能正常的運(yùn)行。MySQL的數(shù)據(jù)接口在 ByteFX.Data.MySqlClient 這個(gè)空間名里,而不是Windows上的MySql.Data.MySqlClient空間名。事實(shí)上 MySQL 的數(shù)據(jù)接口原來(lái)是由 ByteFX公司開(kāi)發(fā)的,但是后被MySQL公司收購(gòu)。所以如果你使用Mono的話,你必須這樣聲明空間名:
using ByteFX.Data.MySqlClient;
MySQL 和 .NET 的組合提供了一個(gè)強(qiáng)大的開(kāi)發(fā)平臺(tái)。MySQL在開(kāi)源社區(qū)得到了強(qiáng)大的技術(shù)支持,.NET也通過(guò) Mono 而被開(kāi)放源代碼社區(qū)所接受。這樣的組合提供了一個(gè)在Windows,及其他語(yǔ)言如UNIX或Linux,環(huán)境下高度靈活的開(kāi)發(fā)平臺(tái)。
關(guān)鍵字:數(shù)據(jù)庫(kù)、服務(wù)器
新文章:
- CentOS7下圖形配置網(wǎng)絡(luò)的方法
- CentOS 7如何添加刪除用戶
- 如何解決centos7雙系統(tǒng)后丟失windows啟動(dòng)項(xiàng)
- CentOS單網(wǎng)卡如何批量添加不同IP段
- CentOS下iconv命令的介紹
- Centos7 SSH密鑰登陸及密碼密鑰雙重驗(yàn)證詳解
- CentOS 7.1添加刪除用戶的方法
- CentOS查找/掃描局域網(wǎng)打印機(jī)IP講解
- CentOS7使用hostapd實(shí)現(xiàn)無(wú)AP模式的詳解
- su命令不能切換root的解決方法
- 解決VMware下CentOS7網(wǎng)絡(luò)重啟出錯(cuò)
- 解決Centos7雙系統(tǒng)后丟失windows啟動(dòng)項(xiàng)
- CentOS下如何避免文件覆蓋
- CentOS7和CentOS6系統(tǒng)有什么不同呢
- Centos 6.6默認(rèn)iptable規(guī)則詳解