在.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命名空间 8
using System; 9
using MySql.Data.MySqlClient; 10
11
namespace 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
}