在.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 /**////
16 /// 連接到MySql數據庫並返回連接對象
17 ///
18 ///數據庫連接對象
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}