在.NET中使用Sql Server是一直的事情。前幾天學習通過JDBC使用Java連接MySql數據庫,我就想.NET是否同樣可以使用MySql數據庫呢?答案是肯定的,方法也很簡單,在這裡我使用C#作為編程語言,將自己整理出來的方法同大家一起分享。
欲在.NET中使用MySql數據庫,其步驟是:
1. 下載MySql驅動包
2. 引用驅動包中已經編譯好的MySql類組件
3. 編寫代碼
步驟一:下載MySql驅動包
在我寫篇文章的時候,最新的驅動包是5.2,支持Visual Studio 2008。官方下載地址是http://dev.mysql.com/downloads/connector/net/5.2.html
步驟二:
下載的文件是一個壓縮文件,將其解壓縮到本地磁盤。找到bin文件夾中的MySql.Data.dll文件,這個就是我們要引用的組件。通過Visual Studio將其引用到你的項目中
步驟三:編碼我就不多說了,我編寫了一個控制台的示例,並將重要的部分都添加了注釋,代碼如下:
1/**//** 2 * 程序名稱:使用.NET連接MySql數據庫 3 * 作者:吳磊 4 * 日期:2009年01月17日 5 */ 6 7// 使用MySql.Data.MySqlClient命名空間 8using System; 9using MySql.Data.MySqlClient; 10 11namespace Project_Personnel.db 12{ 13 class dbManage 14 { 15 /**//// <summary> 16 /// 連接到MySql數據庫並返回連接對象 17 /// </summary> 18 /// <returns>數據庫連接對象</returns> 19 private static MySqlConnection getCon() 20 { 21 MySqlConnection myCon = null; 22 try 23 { 24 /**//* 25 * Server:數據庫服務器。localhost表示本機 26 * Database:數據庫名稱。school表示mySql中一個名為school的數據庫 27 * Uid:用戶名 28 * Pwd:密碼 29 * CharSet:使用的字符編碼。不設置可能產生亂碼 30 */ 31 myCon = new MySqlConnection("Server=localhost;Database=school;Uid=root;Pwd=123;CharSet=utf8;"); 32 myCon.Open(); 33 } 34 catch (MySqlException e) 35 { 36 //拋出連接MySql數據庫的異常 37 throw new Exception(e.Message); 38 } 39 return myCon; 40 } 41 42 public static void Main() 43 { 44 try 45 { 46 //從shool表中檢索數據的sql語句(別誤會,我是在school數據庫中建立了一個school表) 47 MySqlCommand myCmd = new MySqlCommand("select * from school", getCon()); 48 49 //執行檢索語句並將執行結果賦值給MySqlDataReader對象 50 MySqlDataReader myReader = myCmd.ExecuteReader(); 51 52 //進行讀取 53 while (myReader.Read()) 54 { 55 //myReader的FieldCount屬性表示列數 56 for (int i = 0; i < myReader.FieldCount; i++) 57 { 58 /**//* 59 * 提示:如果使用此if語句,會產生異常:數據為空,不能對空值調用此方法或屬性。 60 * 判斷索引為i的列中的值是否為空,如果為空輸出NULL 61 */ 62 if (!myReader[i].Equals(DBNull.Value)) 63 { 64 Console.Write("{0,10}", myReader[i]); 65 } 66 else 67 { 68 Console.Write("{0,10}", "Null"); 69 } 70 } 71 //換行 72 Console.WriteLine(); 73 } 74 } 75 //捕獲MySql異常 76 catch (MySqlException e) 77 { 78 Console.WriteLine(e.Message); 79 } 80 //捕獲其他異常 81 catch (Exception e) 82 { 83 Console.WriteLine(e.Message); 84 } 85 finally 86 { 87 Console.ReadKey(); 88 } 89 } 90 } 91}