被認為是「世界上最受歡迎的開放原始碼資料庫」的MySQL從最初一個毫不起眼的低成本資料庫伺服器成長為驅動龐大Web網站和重要商業系統的伺服器經歷了一個漫長的歷程。但是,如果你是一位ASP.NET的開發人員,那麼你總是會碰到一個不如意的地方:MySQL原先是為UNIX平台上的應用程式設計的,所以對Windows的支援處於次要地位。
但現在,Windows版本的MySQL已經具備了與UNIX版本相同的功能和穩定性,而且它被認為是用於Windows開發的可行的資料庫伺服器。現在讓我們來看看你可以如何使用ODBC在.NET框架內連接MySQL資料庫。
安裝
下載和安裝Windows版的MySQL。安裝很簡單-只用按照提示你就能夠立即安裝好並開始運作了。如果碰到了問題,可以去MySQL的論壇看看,尋求協助和解決方法。
要把ASP.NET和MySQL連結起來,你需要使用ODBC.NET。一般來說,ODBC.NET的DataProvider是標準的.NET框架(1.1及以上的版本)的一部分,所以會和後者一起自動安裝好。
一旦確認ODBC.NET安裝完畢,你就需要下載用於MySQL的ODBC驅動程式。再強調一遍,MySQL的開發人員都很樂意提供協助——他們都在自己的Web網站上提供了這些驅動程式。在下載文件的時候你可以看看FAQ文檔,它會列出在往系統里安裝MySQL ODBC驅動程式期間可能碰到的所有的問題。
都做好了?現在就讓我們從一些程式碼開始吧。
用ASP.NET連接MySQL
我最喜歡做的一件事情是閱讀,而且當我沒有寫像本文一樣的教學文章時,我會找一個安靜的角落補全參考書目表。不幸的是,我不是一個組織性很強的人,所以這常常搞得一團糟。
那這又與我們今天要談的話題有什麼關係呢?嗯,這是我第一個例子的開場白,這個例子就是創建一個像列表A裡的書的資料庫。
要建立這個表格,就要使用下面的SQL查詢:
CREATE TABLE `books` (
`id` int(5) NOT NULL auto_increment,
`title` varchar(255) NOT NULL default '',
`authors` varchar(255) NOT NULL default '',
`year_of_publication` year(4) NOT NULL default '0000',
`date_added` date NOT NULL default '0000-00-00',
PRIMARY KEY (`id`)
) TYPE=MyISAM;
而要執行這個查詢,就要使用MySQL安裝目錄下的「bin」資料夾的命令列客戶端軟體「mysql.exe」。以下就是具體命令:
c:mysqlbin>mysql -u guest -p test
Enter password: ******
Welcome to the MySQL monitor. Commands end with ; or g.
Your MySQL connection id is 13 to server version: 4.0.12-nt
Type 'help;' 或 'h' for help. Type 'c' to clear the buffer.
mysql> CREATE TABLE `books` (
-> `id` int(5) NOT NULL auto_increment,
-> `title` varchar(255) NOT NULL default '',
-> `authors` varchar(255) NOT NULL default '',
-> `year_of_publication` year(4) NOT NULL default '0000',
-> `date_added` date NOT NULL default '0000-00-00',
-> PRIMARY KEY (`id`)
-> ) TYPE=MyISAM;
Query OK, 0 rows affected (0.02 sec)
一旦「書籍(books)」表格創建好了,就可以開始插入資料了。列表B裡列舉了一些項目。現在,用ASP.NET做同樣的事情-執行SELECT查詢(清單C)並在瀏覽器中顯示結果。如果一切都沒有問題——MySQL伺服器正在運行,MySQL ODBC驅動程式安裝正確,「書籍」表格含有資料——你就應該會看到像圖A裡的頁面。
圖C向你顯示的錯誤訊息會在腳本嘗試存取一個不存在的資料庫表格時出現(要注意,內層「try-catch」結構產生的異常會由外層結構來處理):
以上就是如何使用MySQL和ASP.NET的DataGrid伺服器控制項的介紹。關於你可以如何使用這兩種技術還有更多的內容可談;所以我希望本文和上面提供的其他參考資源能夠幫助你對此有個初步的了解。