写在前面

如果只是为了寻求C#(尤其WPF项目)连接MySQL数据库的解决方案,请直接跳到在VSCode中使用NuGet Package Manager引用dll在VS中使用NuGet来引入dll(以VS2017为例)部分

引入

之前博主在搜索VS写C#WPF项目时连接数据库的相关解答的时候没有找到合适可用的回答,在网上找到的Mysql.data 8.0.25版本的dll导入到项目的应用之后与项目原有的应用之间产生了冲突(显示标识为MySql.Data, Version=8.0.25.0, Culture=neutral, PublicKeyToken= c5687fc88969c44d的程序集MySql.Data’所使用的“System.Runtime, Version= 5.0.0.0, Culture =neutral, PublicKeyT oken= b03f5f7f11 d50a3a“版本高于所引|用的标识为System.Runtime, Version=4.1.2.0, Culture =neutral, PublicKeyToken= b03f5f7f11 d50a3a的程序集’System.Runtime"

在这里插入图片描述

之前博主在使用VSCode写代码的时候使用的是NuGet Package Manager拓展来添加的dll引入,于是在VS中也想试试通过NuGet来导入相关的dll引用

在这里插入图片描述

NuGet简介

Nuget是一个.NET平台下的开源的项目,它是Visual Studio的扩展。在使用Visual Studio开发基于.NET Framework应用时,Nuget能把在项目中添加、移除和更新引用的工作变得更加快捷方便。

简单一点理解就是用VS或者VSCode写C#项目的时候可以借助NuGet来添加一些拓展包

NuGet官网

在NuGet上直接搜索所需的packages,例如MySql.data

在这里插入图片描述

点击右侧的DownLoad Packages下载包,但是此时下载下来的是一个nupkg后缀名的包(其实就是一个压缩包),而这个格式我们是无法直接通过导入dll的方式引入到C#项目之中的,大家可以尝试使用压缩软件打开nupkg后缀的包,在里面找到自己真正需要的dll包导入到C#项目中,但是往往是不行的。我们以MySql.data为例,仅仅导入MySql.data 8.0.25无法运行,会报一个我们上文图片中的错误,因为在VS2017或者VS2019中默认的System版本都是4.0.0的,而MySql.data 8.0.25所需的是更高版本的System配套版本。

在VSCode中使用NuGet Package Manager引用dll

在vscode拓展中搜索NuGet Package Manager,并安装

在这里插入图片描述

回到自己的C#项目,点击查看——命令面板或者直接CTRL+shift+P打开

输入NuGet package,选择NuGet package Manager:Add Package选项来添加所需的包

在这里插入图片描述

搜索Mysql.data选择第一个Mysql.data

在这里插入图片描述

选择对应的版本(与自己的MySQL数据库对应)完成下载

在这里插入图片描述

完成之后记得重新生成一下项目(在终端中输入dotnet restore

重新运行项目来测试连接MySQL数据库

(文末有连接MySQL数据库测试代码)

在VS中使用NuGet来引入dll(以VS2017为例)

点开项目的目录,右键引用,打开管理NuGet程序包

在这里插入图片描述

搜索所需的dll包,例如Mysql.data,选择所需的NuGet包,在右侧选择所需的版本(注意与自己的MySQL版本对应),点击安装(此处因为博主已经下载过该package所以显示的是更新按钮)

在这里插入图片描述

下载的时候我们可以看到,NuGet下载的不仅仅只是一个Mysql.data还有配套的许多包,这也就解释了前文我们只是导入Mysql.data的dll程序不能正常运行的情况了

完成之后记得重新生成一下项目(右键项目名点击重新生成restore)

此时项目已经可以正常的连接MySQL数据库了,如果还是不行就根据VS的提示用NuGet安装上缺少的或者版本不对应的包(与上述相同,不再赘述)

附上一段连接数据库的测试代码(注意修改为自己的数据库名称,以及账号和密码)

try
        {
            string str = "server=localhost;User Id=root;password=123456;Database=zjty";//连接MySQL的字符串
            MySqlConnection giricon = new MySqlConnection(str);//实例化链接
            giricon.Open();//开启连接
            // MySqlCommand mycmd = new MySqlCommand("insert into user(userId) VALUES('c#111')", giricon);
            MySqlCommand mycmd = new MySqlCommand("select * from user", giricon);

            MySqlDataReader reader = mycmd.ExecuteReader();
            //循环单行读取数据,当读取为null时,就退出循环
            while (reader.Read())
            {
                //输出第一列字段值
                Console.Write(reader.GetString(0) + "\t");

                //判断字段"username"是否为null,为null数据转换会失败
                if (!reader.IsDBNull(1))
                {
                    //输出第二列字段值
                    Console.Write(reader.GetString(1) + "\t");
                }
                //判断字段"password"是否为null,为null数据转换会失败
                if (!reader.IsDBNull(2))
                {
                    //输出第三列字段值
                    Console.Write(reader.GetString(2) + "\n");
                }
            }


            // if (mycmd.ExecuteNonQuery() > 0)
            // {
            //     Console.WriteLine("success");
            // }
            // Console.ReadLine();
            // giricon.Close();//关闭
        }
        catch (Exception ex)
        {
            Console.WriteLine("数据库连接异常!");
        }

更多推荐