当前位置: 首页 > 图文教程 > 网络编程 > ASP.NET > 技巧实例:如何在.NET中访问MySQL数据库

ASP.NET
Asp.net 时间操作基类(支持短日期,长日期,时间差)
asp.net 获取机器硬件信息(cpu频率、磁盘可用空间、内存容量等)
asp.net 数据库备份还原(sqlserver+access)
Asp.Net 数据操作类(附通用数据基类)
Asp.net 弹出对话框基类(输出alet警告框)
Asp.net 文件上传类(取得文件后缀名,保存文件,加入文字水印)
Asp.net Socket客户端(远程发送和接收数据)
Asp.net 字符串操作基类(安全,替换,分解等)
Asp.Net数据输出到EXCEL表格中
asp.net Gridview里添加汇总行
asp.net UpdatePanel的简单用法
asp.net ajaxControlToolkit FilteredTextBoxExtender的简单用法
this connector is disabled错误的解决方法
sql事务应用积累
asp.net Page.Controls对象(找到所有服务器控件)
在asp.NET中字符串替换的五种方法
ASP.NET缓存方法分析和实践示例代码
asp.net 在DNN模块开发中遇到的resx怪问题
ASP.NET State service状态服务的问题解决方法
asp.net 结合mysql存储过程进行分页代码

ASP.NET 中的 技巧实例:如何在.NET中访问MySQL数据库


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-23   浏览: 114 ::
收藏到网摘: n/a

引言:如果你不是只在大集团公司工作过的话,你一定会有机会接触到MySQL,虽然它并不支持事务处理,存储过程,但是它提供的功能一定能满足你的大部分需求,另外,简洁的MySQL也有一些它独到的优势,在有些时候,它的速度甚至超过大型数据库。

那么如何在.NET中访问MySQL数据库呢?也许很多人马上会说:用OLEDB嘛,但是事实上采用.NET OleDb Data Provider并不能访问MySQL,如果你使用的话,系统会提示你:"Net Data OLE DB 提供程序 (System.Data.Odbc) 不支持 MSDASQL 提供程序(用于 Odbc 驱动程序的 Microsoft OLE DB 提供程序)。",是什么原因我并不知道,按照MySQLDriverCS的作者的说法就是它被"abandoned by the owner",呵呵,兴许还有些故事。

幸好,我们还有其它的选择,这里就要介绍两种访问MySQL数据库的办法。

使用ODBC.NET

ODBC.NET(全称ODBC .NET Data Provider)是一个免费的.NET Framework附加组件,需要到微软公司的网站上去下载,它需要系统已经安装MDAC 2.7或者更高版本。另外,还需要安装MySQL的ODBC驱动程序,还需要在"ODBC数据源管理器"中配置一下DSN,如下图所示:

在对象的设计上,ODBC.NET也跟OLEDB,SQL等一样,分别为OdbcConnection, OdbcCommand, OdbcDataAdapter, OdbcDataReader,用法也完全一样,如果你希望用ODBC .NET来代替以前的OleDb .NET Data Provider,事实上完全可以通过查找替换的办法来修改你的程序。

以下是一段代码示例:

以下为引用的内容:

try
{
 string constr = "DSN=MySQL;" + "UID=;" +"PWD="; ;
 conn =  new OdbcConnection(constr);
 conn.Open();
 string query = "insert into test.dbtable values10,'disksidkfsdi', 'asdfaf', 'adsfasdf')";
 string tmp = null;
 OdbcCommand cmd = new OdbcCommand(query, conn);
 for(int i = 0; i < 100000; i++)
 {
  cmd.ExecuteNonQuery();
 }
 cmd.Dispose();
 conn.Close();
 query = "select * from test.dbtable";
 OdbcCommand cmd2 = newOdbcCommand(query, conn);
 conn.Open();
 OdbcDataReader reader = cmd2.ExecuteReader();
 while(reader.Read())
 {
  tmp = reader[0].ToString();
  tmp = reader[1].ToString();
  tmp = reader[2].ToString();
  tmp = reader[3].ToString();
 }
 conn.Close();
 query = "delete from test.dbtable";
 OdbcCommand cmd3 = newOdbcCommand(query, conn);
 conn.Open();
 cmd3.ExecuteNonQuery();
 }
 catch(Exception ex)
 {
  MessageBox.Show(ex.Message);
 }
 finally
 {
 conn.Close();
}

只要是用C#写过数据库应用的人一定能知道,上面的代码执行了十万次插入数据和读取数据,最后将数据记录全部删除的操作。

使用MySQLDriverCS

可能大部分的人都不知道这个东西,MySQLDriverCS是MySQL数据库的一个免费开源的.NET驱动程序。和Sql .NET Data Provider是为Sql Server一样,它是专门为MySQL设计的,可以叫做MySQL .NET Data Provider。使用他不需要额外的去设置ODBC数据源,基本上只要能连接到MySQL就能通过MySQLDriverCS来访问。

MySQLDriverCS是SourceForge.NET上的一个项目,不过不知道什么原因,这个网站在国内访问不到。

下面是使用MySQLDriverCS的代码示例:

以下为引用的内容:

MySQLConnection conn = null;
try
{
 string connstr = "Data Source=MySQL;Password=root;User ID=root;Location=localhost";
 conn =  new MySQLConnection(constr);
 conn.Open();
 string query = "insert into test.dbtable values(10, 'disksidkfsdi', 'asdfaf', 'adsfasdf')";
 string tmp = null;
 MySQLCommand cmd = new MySQLCommand(query, conn);
 for(int i = 0; i < 100000; i++)
 {
          cmd.ExecuteNonQuery();
 }
 cmd.Dispose();
 conn.Close();
 query = "select * from test.dbtable";
 MySQLCommand cmd2 = new MySQLCommand(query, conn);
 conn.Open();
 MySQLDataReader reader = cmd2.ExecuteReaderEx();
 while(reader.Read())
 {
  tmp = reader[0].ToString();
  tmp = reader[1].ToString();
  tmp = reader[2].ToString();
  tmp = reader[3].ToString();
 }
 conn.Close();
 query = "delete from test.dbtable";
 MySQLCommand cmd3 = new MySQLCommand(query, conn);
 conn.Open();
 cmd3.ExecuteNonQuery();
}
catch(Exception ex)
{
 MessageBox.Show(ex.Message);
}
finally
{
 conn.Close();
}

 
和上面的那段代码几乎一模一样,所不同的是Odbc变成了MySQL,另外,需要注意的一点是Command的ExecuteReader方法在MySQLDriverCS中变成了ExecuteReaderEx,还有些细微的差别请参考附带的文档详细的介绍。

性能测试

有些读者其实已经看出来我以上写的那段代码的用意,对了,其实目的就是用来进行性能测试的。以上两段代码的执行时间分别是:ODBC.NET为24秒左右,MySQLDriverCS为17秒左右。结果并不出人意外,作为MySQL的专用数据驱动程序,MySQLDriverCS的速度大大快于ODBC.NET是在情理之中的。

总结

本文介绍了两种MySQL数据库访问的方法,同时对它们的性能做了一个简单的测试,希望能为各位读者在采用MySQL数据库开发.NET应用的时候提供一个有价值的参考。