• [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();


                



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

  • 相关阅读:
    优雅高效的MyBatis-Plus工具快速入门使用
    mybatis中#{}和${}的区别
    异常处理com.sun.image.codec.jpeg.JPEGImageEncoder
    图片压缩之-JPEGCodec失效替换方案
    Bugly实现app全量更新
    MyBatis下MySqL用户口令不能为空
    java.lang.OutOfMemoryError: PermGen space及其解决方法
    Hibernate or 的用法
    如何理解<base href="<%=basePath%>"
    小程序 wx.request ajax示例
  • 原文地址:https://www.cnblogs.com/Jimmy/p/41892.html
Copyright © 2020-2023  润新知