asp.net 搭配 mysql 运行 的时候 @ 和 ? 的问题,Connector Net 最新版本,1.0版本和6.5.4版本的区别,为什么发布的时候没有包含MySql.Data.dll?

最近的项目需要通过asp.net 来连接 mysql 使用,在参数化的时候,mysql需要使用 ? 而不是@,但是后来又看到有的朋友写的是 @ 也可以运行,自己特别的尝试了两个方法。分析如下以下两段代码,区别仅仅是 @ 和 ?

string sql = "delete from tb_ad_record where rid=@rid";
            MySqlParameter[] parameters = { 
                                          new MySqlParameter("@rid",MySqlDbType.Int32,11)
                                          };
            parameters[0].Value = rid;

 

string sql = "delete from tb_ad_record where rid=?rid";
            MySqlParameter[] parameters = { 
                                          new MySqlParameter("?rid",MySqlDbType.Int32,11)
                                          };
            parameters[0].Value = rid;

 

但是?的就能运行,而@的不能运行,原因和在? 原因在于你引用的 MySql.Data.dll 的版本问题

 

如果该版本是 比较老的 1.0 的版本,那么只能通过 ? 来表示参数,如果是比较新的 6.0以上的(反正我下载的是最新版的) MySql.Data.dll,则可以使用 @ 符号(也可以使用? ,但是我们推荐使用@ )

 

这对于我们使用动软生成器,或者是其他的代码生成器生成的代码来说,是很方便的,就不需要来回的把 @ 修改 ? 了

 

 

另外,关于 最新版的 MySql.Data.dll  如何获得呢?在mysql的官方网站上,http://www.mysql.com/downloads/connector/net/ 找到   MySQL Connector Net ,这个就是mysql为 c# 开发的专门用于连接mysql的软件,最新版有 MySQL Connector Net  6.5.4,安装完成后,在安装目录的 Assemblies\v2.0 文件夹下,找到你要的 Sql.Data.dll  .如果你开发的项目是 .net 4.0的,则选择Assemblies\v4.0 里面的 dll文件

 

这个 connector net 不光是个 MySQL 驱动,还提供了像 Entity Framework、Asp.Net Web Providers、Compact Framework、VS 2008/vs2010/vs2012 集成的支持,还配置 CSharp 和 VB 的例子。详细的配置、使用文档请参考安装目录中的 MySql.Data.chm 文件。

 

对于 InnoDB 存储引擎的 MySQL 是支持事物的,这个官方的的驱动支持事物的代码如下:

 

MySqlTransaction trans = con.BeginTransaction(); //启用事物

trans.Commit(); //正常时提交

trans.Rollback(); //异常时回滚

 

image

image

 

要注意一下2个问题

1:  6.5.4 的版本,MySqlDbType.Datetime 换成了  DateTime   也就是说,和 c#链接mssql的数据类型一样了 (1.0的版本是 MySqlDbType.Datetime)

 

2:   如果你在你本地电脑上安装了MySQL Connector Net 6.5.4,那么你的VS2010里面的项目,在 DAL层的 引用会自动变成 你安装路径里面的 MySql.Data.dll 的路径,而且在你发布项目的时候,由于你在你本地电脑上已经安装了 MySQL Connector Net, 那么发布的 bin 的文件夹里面是没有MySql.Data.dll   存在的

这个bug可能是因为,vs认为你的本地就是服务器,而你的服务器已经安装了 MySQL Connector Net ,也就是说你肯定是会有 MySql.Data.dll  文件的,所以vs就干脆不包含在项目里面了。解决方法就是把 MySQL Connector Net  里面的 MySql.Data.dll 复制出来,然后把软件卸载掉。(需要重启一次电脑)然后你的vs再次选择发布,你就会看到你的 dll 文件在 bin 文件夹被发布出来了哦。

posted @ 2012-10-18 10:31  梨花驿路  阅读(731)  评论(0编辑  收藏  举报