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

摘要:
最近,我需要在一个.NET程序中操作MySQL数据库。即使部署了软件,客户端也需要安装MySQL ODBC驱动程序。您可以像我们使用ADO.NET在中操作MSSQLServer数据库那样轻松地操作MySQL数据库吗。NET环境?现在我们有三种方法在.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,下载安装。试用了一下觉得一切正常,心里面正窃喜。结果在东西做到后面部分的时候一下子把我打懵了[Jimmy原创] 在.NET环境下操作MySQL数据库第1张,原来时Connector/Net还不支持中文,select回来数据都是乱码,我汗啊,当时第二天就要交东西的初版[Jimmy原创] 在.NET环境下操作MySQL数据库第2张,尝试了多次之后还是搞不定这个中文的问题(可能这东西我还没有吃透吧[Jimmy原创] 在.NET环境下操作MySQL数据库第3张)。已经做好准备临时改用ODBC的方式,但是怀着一点点的不死心,又在网上找方法,找到了上述那篇文章,简直是救命稻草啊,下载CoreLabs 组件使用之后几乎什么都没有改(把引用和名字改了一下),程序就可以用了,不错不错。这个时候又让我寒心的事情又出现了,select的数据不完整,老是出错,找了半天才在CoreLabs 的主页找到说明了,Trial版只能返回6列字段(在产品说明里面很小的字注释,真是#%…#◎¥◎[Jimmy原创] 在.NET环境下操作MySQL数据库第4张),没有办法,由于时间比较紧,东西也不大,就将就用了,每个select都得分成2,3此才能把数据取完,权宜之计只好这样拉。哪位大侠有破解版啊[Jimmy原创] 在.NET环境下操作MySQL数据库第5张
       
        总结一下,现在不想用ODBC连MySQL的话就用Connector/Net或者CoreLabs 组件吧,确实是很方便的方法,Connector/Net做的不错而且现在是官方推荐的,只是中文不支持,等着他们更新吧。CoreLabs 组件也不错,只是Trial版有字段返回的限制,大家看着选用吧,hoho。

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

[Jimmy原创] 在.NET环境下操作MySQL数据库第6张using System.Text;
[Jimmy原创] 在.NET环境下操作MySQL数据库第6张using CoreLab.MySql;          //here
[Jimmy原创] 在.NET环境下操作MySQL数据库第6张

[Jimmy原创] 在.NET环境下操作MySQL数据库第6张[Jimmy原创] 在.NET环境下操作MySQL数据库第10张[Jimmy原创] 在.NET环境下操作MySQL数据库第10张
[Jimmy原创] 在.NET环境下操作MySQL数据库第6张
[Jimmy原创] 在.NET环境下操作MySQL数据库第6张mySqlConnection1.ConnectionString 
= connectStr ;                
[Jimmy原创] 在.NET环境下操作MySQL数据库第6张
try
[Jimmy原创] 在.NET环境下操作MySQL数据库第15张[Jimmy原创] 在.NET环境下操作MySQL数据库第16张
[Jimmy原创] 在.NET环境下操作MySQL数据库第10张{
[Jimmy原创] 在.NET环境下操作MySQL数据库第18张    mySqlConnection1.Open();    
[Jimmy原创] 在.NET环境下操作MySQL数据库第19张}

[Jimmy原创] 在.NET环境下操作MySQL数据库第6张
catch(Exception exp)
[Jimmy原创] 在.NET环境下操作MySQL数据库第15张[Jimmy原创] 在.NET环境下操作MySQL数据库第16张
[Jimmy原创] 在.NET环境下操作MySQL数据库第10张{
[Jimmy原创] 在.NET环境下操作MySQL数据库第18张Debug.WriteLine(exp.Message);
[Jimmy原创] 在.NET环境下操作MySQL数据库第19张}

[Jimmy原创] 在.NET环境下操作MySQL数据库第6张
[Jimmy原创] 在.NET环境下操作MySQL数据库第6张[Jimmy原创] 在.NET环境下操作MySQL数据库第10张[Jimmy原创] 在.NET环境下操作MySQL数据库第10张
[Jimmy原创] 在.NET环境下操作MySQL数据库第6张
[Jimmy原创] 在.NET环境下操作MySQL数据库第6张
string mySqlstr = "SELECT UpID,UserID,Catalog,FullName,FileSize,FileName from " 
                              + tableName + " where FileName = '" + dbFileName + "'";        
[Jimmy原创] 在.NET环境下操作MySQL数据库第6张
  MySqlCommand cmd 
= new MySqlCommand(mySqlstr,mySqlConnection1);
[Jimmy原创] 在.NET环境下操作MySQL数据库第6张
  MySqlDataReader myReader 
= cmd.ExecuteReader();
[Jimmy原创] 在.NET环境下操作MySQL数据库第6张
[Jimmy原创] 在.NET环境下操作MySQL数据库第6张
while(myReader.Read())    
[Jimmy原创] 在.NET环境下操作MySQL数据库第15张[Jimmy原创] 在.NET环境下操作MySQL数据库第16张
[Jimmy原创] 在.NET环境下操作MySQL数据库第10张{
[Jimmy原创] 在.NET环境下操作MySQL数据库第18张   [Jimmy原创] 在.NET环境下操作MySQL数据库第10张[Jimmy原创] 在.NET环境下操作MySQL数据库第10张
[Jimmy原创] 在.NET环境下操作MySQL数据库第19张}

[Jimmy原创] 在.NET环境下操作MySQL数据库第6张myReader.Close();
[Jimmy原创] 在.NET环境下操作MySQL数据库第6张
[Jimmy原创] 在.NET环境下操作MySQL数据库第6张
[Jimmy原创] 在.NET环境下操作MySQL数据库第6张            
[Jimmy原创] 在.NET环境下操作MySQL数据库第6张

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

        好了,感冒了头昏昏的。。。有问题大家不要笑哦。。。[Jimmy原创] 在.NET环境下操作MySQL数据库第49张

免责声明:文章转载自《[Jimmy原创] 在.NET环境下操作MySQL数据库》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇【Bullet引擎】刚体类 —— btRigidBody动态库链接注意事项下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

SQL Server代理(2/12):作业步骤和子系统

SQL Server代理是所有实时数据库的核心。代理有很多不明显的用法,因此系统的知识,对于开发人员还是DBA都是有用的。这系列文章会通俗介绍它的很多用法。 SQL Server代理作业有一系列的一个或多个作业步骤组成。一个作业步骤会分配给特定的作业子系统,用来标识将要进行的作业步骤工作种类。每个作业步骤在各自安全上下文运行,尽管每个作业有可以决定谁可以...

EC20模块(mdm9607)复用pin脚当作普通gpio的设置方法

修改pin37~40,当作普通gpio的方法如下:   下面代码截图需要确认是否一样,如不一样请修改:   修改pin41~42 ,当作普通gpio方法如下:   Pin24~27,当作普通gpio方法如下:         Pin136不建议修改。 Pin136的用法,请参考以下文件/etc/init.d/wlan:  ...

使用SQL Server语句统计某年龄段人数占总人数的比例(多层查询语句嵌套-比例分析)

需求:需统计出某个集合内,某个段所占的比例,涉及SELECT查询语句的嵌套,如有疑问可留言。 如下: --按性别进行年度挂号年龄段分析--男SELECT 年龄段,SUM(人数) 数量,cast(cast((SUM(人数)/((select count(*) from YXHIS2020..VTBMZGHMX2020 WHERE BTH=0 AND CXB=...

Hibernate一级缓存、二级缓存

缓存就是把以前从数据库中查询出来和使用过的对象保存在内存中,准确说就是一个数据结构中,这个数据结构通常是或类似HashMap,当以后要使用某个对象时,先查询缓存中是否有这个对象,如果有则使用缓存中的对象,如果没有则去查询数据库,并将查询出来的对象保存在缓存中,以便下次使用。 1、缓存的伪代码: DAO { HashMap map = new Ma...

navicat查看MySQL数据库、表容量大小

 1. 查看所有数据库容量大小 select table_schema as '数据库', sum(table_rows) as '记录数', sum(truncate(data_length/1024/1024, 2)) as '数据容量(MB)', sum(truncate(index_length/1024/...

Linux下MySQL安装及配置

Linux下MySQL安装及配置 安装MySQL   Ubuntu系统中,直接使用apt install的方式去安装MySQL的服务端和客户端,MySQL的客户端必须安装,否则无法通过命令连接并操作MySQL。安装命令如下:   apt install -y mysql-server mysql-client   管理MySQL服务   启动、停止和重启服...