posts - 283, comments - 10329, trackbacks - 112, articles - 5
  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理
在.NET中要访问MySql,我采用的是MySql官方提供的.NET connector,此驱动只需要下载即可使用:http://dev.mysql.com/downloads/connector/net/1.0.html

在使用中积累了几点经验:
1)使用Parameter参数形式提交Command时必须要把"@"号换成"?"号,这一点让我困惑了一天,只是不明白MySQL为何要搞特殊呢,象MS、ODP.NET for Oracle、OleDb等方式,都是用"@"号的。
例子如下:
 
string connstr=Setting.Instance().GetConnectionString("MySql");
MySqlConnection conn 
=new MySqlConnection(connstr);
conn.Open();
string query = "insert into myfirst(Id,Name) values(?Id,?Name)";
MySqlCommand cmd 
= new MySqlCommand(query, conn);
MySqlParameter para1
=new MySqlParameter("?Id",DbType.Int32); //这里要注意必须要用?号
MySqlParameter para2=new MySqlParameter("?Name",DbType.String);//这里要注意必须要用?号
para1.Value=5;
para2.Value
="ddd";
cmd.Parameters.Add(para1);
cmd.Parameters.Add(para2);
cmd.ExecuteNonQuery();


2)在MySQL中也有保留字,为了提供兼容,我必须要找到定界符,好不容易在MySql的论坛里找到了,使用的定界符是`,这个符号不是单引号,而是键盘上数字1前面的那个“点”,真是害死我啊。

3)MySQL中的TOP功能倒是非常简单,只需要语句后面使用“limit n”就行了,这比ORACLE的那Rownum方便多了。

使用MySql 的.NET Connector访问MySQL总体来说还算不错的,大部分是兼容.NET中的IConnection、ICommand的。

PS:有个不明白就是在.NET Connector中提供一个MySqlDateTime类,不知道这个类具体有什么用,怎么用,在国内没有找到相关的资料。MySqlDateTime跟System.Date还不兼容,在MySQL论坛上相关帖子N多。

如果采用String类型的Parameter传递给MySql的DateTime字段会报:Unable to Convert MySql Date/Time value to System.DateTime 的错误。

所有相关的MySQL的问题可以去:http://forum.mysql.com/ 论坛看看:)

Feedback

#1楼   回复  引用  查看    

2005-11-08 17:57 by flower.b      
MS SQL 是“@”是因为 SqlClient 实际上是调用的MS SQL的一个存储过程,那个存储过程本身规定要用“@”,SqlParameter 就是那个存储过程的参数。。。。。

难道MY SQL 也是这个原因?呵呵。

谢谢分享。。。

#2楼   回复  引用    

2006-01-05 11:58 by 睿商--阳光[未注册用户]
使用MySql.Data.MySqlClient访问MYSQL的数据库时,读出的中文内容(PHP插入的)是乱码。

如果是。NET插入的中文数据,无论是PHP还是。NET读出的都是乱码。

进行数据操作前,做过SET NAMES 'gb2312'的操作,但无效。

请教一下能解决吗?

#3楼   回复  引用    

2006-02-17 18:10 by 方贤钟[未注册用户]
乱码问题 你可以通过 修改源代码解决 。
通过修改源代码connectionstring,加入charset=gb2312
修改代码 下载 http://www.cnblogs.com/Files/neozhu/src.rar

#4楼   回复  引用    

2006-02-17 18:22 by 方贤钟[未注册用户]
初用MySql 真不习惯, int 类型的 默认长度是11比特。
而且还有居然连blob 都分好几种,后来都用longblob了, 最大4 G

MY SQL 的 @ ?参数也是问题, 用@ 提交到数据库都是空。
郁闷啊, 以前知道的 没有想起来,昨天晚上搞了好长时间。


以前都用MSSQL 的, 我现在的win2003 web 居然不能安装 SQL2000 , 提示程序不能执行, 真是郁闷死了, 只有搞了 MySql 5 运行了。

MySQLDriverCS 驱动 是用c写的, 能不能用在web上还没有试过。
我现在用的是 mysql-connector-net-1.0.7-noinstall 版本,停不错的。

MySQL 5 支持存储过程, 不清楚语法有什么不同,以后研究研究。

#5楼   回复  引用    

2006-04-03 16:57 by z[未注册用户]
请问怎么具体修改源代码来解决中文乱码问题

#6楼   回复  引用    

2006-04-03 18:02 by z[未注册用户]
修改了源代码,还是无法解决中问乱码问题,数据库中是中文,但读出后是乱码,在程序中写如数据库的 SQL中用了中文字符串,但写如数据库后是乱码,不知道如何解决!希望高手给个方法,(用的是MYSQL官方提供的接口net1.0),谢谢

#7楼   回复  引用  查看    

2006-04-12 11:22 by 一蓑烟雨任平生      
MySQLDriverCS可能用在web上

#8楼   回复  引用    

2006-04-25 17:46 by 朋友[未注册用户]
修改了源代码,还是无法解决中问乱码问题,数据库中是中文,但读出后是乱码,在程序中写如数据库的 SQL中用了中文字符串,但写如数据库后是乱码,不知道如何解决!希望高手给个方法,(用的是MYSQL官方提供的接口net1.0),谢谢


不知道你怎么修改的,我修改了是可以的
在 common\DBConnectionString.cs
里的 ConnectionParameterParsed里,增加下面的语句
case "charset":
hash["charset"] = value ;
return true ;

然后你设置连接字符串的时候,加上 charset=gb2312;就可以了

也可以修改 ConnectionString.cs 里 GetDefaultValues

defaults["charset"] = "gb2312" ; //修改为常用的默认字符集即可

#9楼   回复  引用    

2006-05-18 09:40 by z[未注册用户]
非常感谢这位朋友的帮助,

好长时间没真正用 MYSQL ,谢谢提供说明。

#11楼   回复  引用    

2006-08-11 11:09 by jackwsun[未注册用户]
辛苦您了

#12楼   回复  引用    

2006-08-18 10:47 by alpha7happy[未注册用户]
万分感谢!!!终于把@的问题解决了!!!!!!!

#13楼   回复  引用    

2006-11-01 22:38 by 懒狗狗[未注册用户]
MySQLDriverCS可以用于Web,我已经尝试过了

#14楼   回复  引用    

2006-11-01 22:38 by 懒狗狗[未注册用户]
MySQLDriverCS可以用于Web,我已经尝试过了

#15楼   回复  引用  查看    

2009-06-01 22:53 by Keep Walking      
那个connecter 6.0已经没有你所说的问题了,估计你用的是1.0的



发表评论

昵称: [登录] [注册]

主页:

邮箱:(仅博主可见)

评论内容:

  登录  注册

[使用Ctrl+Enter键快速提交评论]

0 271646





相关文章:

相关链接: