您的位置:首页 > 博客中心 > 数据库 >

C#连接MySQL的方法及出现的GUID问题的解决方案

时间:2022-03-14 07:18

本人环境:

        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文件,文件下载地址为(希望还找得到) ,版本自选,平台选择.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 类型。

本类排行

今日推荐

热门手游