[Jimmy原创] 在.NET环境下操作MySQL数据库

        由于工作需要,最近需要在我的一个.NET程序里面对MySQL数据库进行操作,最简单的方法便是用ODBC连接,这是一个通用性很强的方法,但是这样做也有其缺点,就是软件部署的时候客户机也需要安装MySQL的ODBC驱动,以及做一些设定工作,这样对一般用户来说是比较困难的,就算你提供详尽的安装指南。那么能不能像我们在.NET环境里面使用ADO.NET操作MS SQLServer数据库一样的方便的操作MySQL数据库呢?答案是可以的。。。

        大家可以看看MySQL官方的这篇文章Exploring MySQL in the Microsoft .NET Environment,如同这篇文章所说的一样,现在我们在.NET环境要访问MySQL数据库有3种方法:
    1、使用ODBC.NET - MyODBC连接,这里我们不讨论这个方法,因为ODBC的方法现在已经比较成熟,相关使用设置的文章也到处都有。
    2、使用OLEDB.NET - MyOLEDB连接,现在MySQL还没有正式的支持MyOLEDB,我们在这里也不进行讨论。
    3、使用类似ADO.NET的方法连接MySQL数据库 - Using MySQL Native .NET Providers。yes,我们要的就是这个。
         
       使用这样的方法我们就能方便的随心所欲的操作MySQL数据库,SqlConnection 、SqlDataAdapter、SqlCommand?yes,就是这样的,只不过前面加上My,是基于MySQL数据库的。现在有2家公司开发并提供这样的组件下载:
        1、ByteFX.Data     
                    免费并且是开源的一个项目,现在已经被收编为MySQL的官方Connector/Net
        2、CoreLabs
                    需要购买使用的组件,不过提供Trial版本(使用限制:select 的时候只能返回6个字段)
        
        其实我一开始找方法在.NET下操作MySQL数据库时一下子就在MySQL官方网站上找到了Connector/Net,下载安装。试用了一下觉得一切正常,心里面正窃喜。结果在东西做到后面部分的时候一下子把我打懵了,原来时Connector/Net还不支持中文,select回来数据都是乱码,我汗啊,当时第二天就要交东西的初版,尝试了多次之后还是搞不定这个中文的问题(可能这东西我还没有吃透吧)。已经做好准备临时改用ODBC的方式,但是怀着一点点的不死心,又在网上找方法,找到了上述那篇文章,简直是救命稻草啊,下载CoreLabs 组件使用之后几乎什么都没有改(把引用和名字改了一下),程序就可以用了,不错不错。这个时候又让我寒心的事情又出现了,select的数据不完整,老是出错,找了半天才在CoreLabs 的主页找到说明了,Trial版只能返回6列字段(在产品说明里面很小的字注释,真是#%…#◎¥◎),没有办法,由于时间比较紧,东西也不大,就将就用了,每个select都得分成2,3此才能把数据取完,权宜之计只好这样拉。哪位大侠有破解版啊
       
        总结一下,现在不想用ODBC连MySQL的话就用Connector/Net或者CoreLabs 组件吧,确实是很方便的方法,Connector/Net做的不错而且现在是官方推荐的,只是中文不支持,等着他们更新吧。CoreLabs 组件也不错,只是Trial版有字段返回的限制,大家看着选用吧,hoho。

        最后贴一点代码,大家可以看出来和ADO的使用几乎没有区别的说......

using System.Text;
using CoreLab.MySql;          //here



mySqlConnection1.ConnectionString 
= connectStr ;                
try
{
    mySqlConnection1.Open();    
}

catch(Exception exp)
{
Debug.WriteLine(exp.Message);
}




string mySqlstr = "SELECT UpID,UserID,Catalog,FullName,FileSize,FileName from " 
                              + tableName + " where FileName = '" + dbFileName + "'";        

  MySqlCommand cmd 
= new MySqlCommand(mySqlstr,mySqlConnection1);

  MySqlDataReader myReader 
= cmd.ExecuteReader();

while(myReader.Read())    
{
   
}

myReader.Close();


            



        好了,感冒了头昏昏的。。。有问题大家不要笑哦。。。

原文地址:https://www.cnblogs.com/Jimmy/p/41892.html