本人环境:
win7 64位
MySQL(版本:mysql-installer-community-5.7.4.0-m14.1411728256.msi)
VS2012
用C#连接MySQL,我个人觉得是件很蹩脚的事,但是在实际中确实很遇到这样的情况。为了完成一个简单的测试,我进行了这样的尝试。
1.安装MySQL
简单的选择加下一步,傻瓜式的操作,看似简单,偏偏在最后一步配置的时候出现问题。提示让我Try again,卸载再安装还是一样。最后我在root密码设置的时候填写简单的1234,尽管还是提示同样的错误,我取消安装后,打开MySQL Workbench CE ,竟然能够登陆,出现了test数据库。我感到很惊讶,原因也不知,确实很神奇。如有大神知道为何,还请相告。
2.C#连接Mysql数据库
百度一搜连接数据库的方法确实还不少,我选择了一种比较简单方便的方式,使用官方的MySQL Connector/Net。
1)首先下载mysql-connector-net文件,文件下载地址为http://dev.mysql.com/downloads/connector/net/6.6.html#downloads(希望还找得到) ,版本自选,平台选择.Net&Mono,下载ZIP免安装版。
2)解压缩刚才下载的zip文件,里面有几个版本,在这里我选的是V4。
3)在C#引用中添加V4文件夹下的几个dll链接库。
4)代码连接
1 string constr = "server=127.0.0.1;user=root;password=1234;database=test;port=3306"; 2 MySqlConnection mycon = new MySqlConnection(constr); 3 mycon.Open(); 4 string cmdstr = "SELECT * FROM test.art;"; 5 MySqlCommand mycmd = new MySqlCommand(cmdstr, mycon); 6 MySqlDataReader reader = mycmd.ExecuteReader(); 7 while (reader.Read()) 8 { 9 ....... 10 } 11 mycon.Close();
连接MySQL的代码和连接MSSQL数据库类似。连接的最后你还要释放mycon的资源。当然你也可以使用using()的方法免除对mycon善后处理的麻烦。
注意:不能用ExecuteNonQuery()方法返回select查询的条数,因为其返回的结果是-1。
3.在写完代码运行时突然提示GUID 应包含带 4 个短划线的 32 位数(xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx),瞬间感到很无助。这个世界怎么了?
我的第一感觉是连接MySQl数据库时出现了问题。但网上有人说是VS自身的问题,需要删掉C盘下的某某三个文件,我删除后可惜还是不行。最后查到是原来是MySQL中char(36)被误认为是GUID,将char(36)改成char(40)后(非char(36)即可),错误不在提示。真的是很神奇。
看来是MySQL官方的连接器将定义为char(36)的字段当成了GUID 类型。