c#抓取网页数据(.data8.0.25.NET项目的应用之间产生了冲突 )

优采云 发布时间: 2021-12-23 05:15

  c#抓取网页数据(.data8.0.25.NET项目的应用之间产生了冲突

)

  写在前面

  如果你只是在寻找C#(尤其是WPF项目)连接MySQL数据库的解决方案,请直接跳到使用NuGet包管理器在VSCode中引用dll或NuGet在VS中导入dll的部分(以VS2017为例) )

  介绍

  之前博主在VS中编写C#WPF项目时,在搜索数据库相关答案时,没有找到合适的答案。将网上找到的Mysql.data 8.0.25 版本的dll 导入到项目中 项目的应用程序与项目的原创应用程序发生冲突(显示为MySql.Data, Version=8.0.25.0, Culture=neutral, PublicKeyToken= c5687fc88969c44d “System.Runtime, Version= 5.0.0. 0, Culture =neutral, PublicKeyT oken= b03f5f7f11 d50a3a" 程序集MySql.Data'使用的版本高于引用的版本|使用标识为System.Runtime, Version=4.1.2.0, Culture =neutral, PublicKeyToken= b03f5f7f11 d50a3a assembly'System.

  

  之前博主在使用VSCode写代码的时候,使用了NuGet Package Manager扩展来添加dll导入,所以在VS中,我也想尝试通过NuGet来导入相关的dll引用

  

  NuGet 简介

  Nuget是.NET平台下的一个开源项目,是Visual Studio的扩展。在使用 Visual Studio 开发基于 .NET Framework 的应用程序时,Nuget 可以更快速、更方便地添加、删除和更新项目中的引用。

  一个简单的理解就是在用VS或者VSCode写C#项目的时候,可以使用NuGet来添加一些扩展包

  NuGet官网

  直接在NuGet上搜索需要的包,比如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 包管理器引用 dll

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

  

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

  进入NuGet包,选择NuGet包管理器:添加包选项添加需要的包

  

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

  

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

  完成后记得重新生成项目(在终端输入dotnet restore)

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

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

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

  点击打开项目目录,右键引用,打开管理NuGet包

  

  搜索需要的dll包,比如Mysql.data,选择需要的NuGet包,在右侧选择需要的版本(注意对应自己的MySQL版本),点击安装(这里因为博主已经下载了包所以显示更新按钮)

  

  下载的时候可以看到NuGet不仅下载了一个Mysql.data,还下载了很多配套的包。这也解释了上一篇我们刚刚导入的Mysql.data的dll程序无法正常运行的情况。

  完成后记得重新生成项目(右键项目名称,点击regenerate 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("数据库连接异常!");

}

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线