C# 字典中不存在给定的键。使用mysql
我正在尝试将C中的一个项目与MySQL localhost链接起来 但我在执行登录时遇到错误C# 字典中不存在给定的键。使用mysql,c#,mysql,.net,C#,Mysql,.net,我正在尝试将C中的一个项目与MySQL localhost链接起来 但我在执行登录时遇到错误 System.Collections.Generic.KeyNotFoundException was unhandled HResult=-2146232969 Message=The given key was not present in the dictionary. Source=mscorlib StackTrace: at System.Collections.Generic.Dictio
System.Collections.Generic.KeyNotFoundException was unhandled
HResult=-2146232969
Message=The given key was not present in the dictionary.
Source=mscorlib
StackTrace:
at System.Collections.Generic.Dictionary`2.get_Item(TKey key)
at MySql.Data.MySqlClient.CharSetMap.GetCharacterSet(DBVersion version, String CharSetName)
at MySql.Data.MySqlClient.NativeDriver.GetFieldMetaData41()
at MySql.Data.MySqlClient.NativeDriver.GetFieldMetaData()
at MySql.Data.MySqlClient.NativeDriver.ReadColumnMetadata(Int32 count)
at MySql.Data.MySqlClient.ResultSet.LoadMetaData()
at MySql.Data.MySqlClient.ResultSet.NextResult()
at MySql.Data.MySqlClient.MySqlDataReader.NextResult()
at MySql.Data.MySqlClient.MySqlCommand.ExecuteReader(CommandBehavior behavior)
at MySql.Data.MySqlClient.MySqlCommand.ExecuteReader()
at MySql.Data.MySqlClient.MySqlCommand.ExecuteNonQuery()
at College_Student.login.button1_Click(Object sender, EventArgs e) in C:\Users\zMJ\Desktop\College_Student\College_Student\login.cs:line 87
at System.Windows.Forms.Control.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnClick(EventArgs e)
这是我尝试的连接
MySqlConnection con = new MySqlConnection(" Server=localhost;Database=college_management;Uid=root;Pwd=12345678;CharSet=utf8;");
图书馆的建设与使用
using MySql.Data.MySqlClient;
using System.Data;
和在按钮中
private void button1_Click(object sender, EventArgs e)
{
i=0;
con.Open();
MySqlCommand cmd = con.CreateCommand();
cmd.CommandType = CommandType.Text;
cmd.CommandText = "SELECT * FROM admins where name='" + textBox1.Text + "' and password='" + textBox2.Text + "' ";
cmd.ExecuteNonQuery();
DataTable dt = new DataTable();
MySqlDataAdapter da = new MySqlDataAdapter(cmd);
da.Fill(dt);
i = Convert.ToInt32(dt.Rows.Count.ToString());
if (i == 0)
{
MessageBox.Show("error");
}
else
{
this.Hide();
new home().Show();
}
con.Close();
}
该问题似乎是由于对数据库或列使用了Connector/NET不支持的字符集造成的。例如,见。这通常通过从NuGet更新到库的最新版本来解决
如果您已经在运行最新版本的Connector/NET,请尝试切换到,这是一个MySQL ADO.NET库,用于C。如果我键入x'或1==1;-进入你的文本框1?您应该使用参数化查询。ExecuteNonQuery适用于只返回受影响行数的插入/删除操作,您应该使用ExecuteScalar和SELECT COUNT*..的SQL,但一定要修复参数化查询…@RonBeyer从youtube获取相同错误我的上述代码什么是作为文本而不是图像的完整异常详细信息@BradleyGrainger列排序中的问题例如,我可以请求其排序规则为utf8\u general\u ci的列,以便在我使其排序规则为utf8\u general\u ci时id为整数,如图所示不会更改,如果我请求countname或选择***或**选择SUM,则会得到相同的错误您是否尝试过更新到最新版本的MySql.Data,或切换到MySqlConnector?是,更新MySql.Data.dll,但得到警告“无法解析主要引用MySql.Data,因为它是根据.NETFramework,version=v4.5.2 framework构建的。这是一个比当前目标框架更高的版本。NETFramework,版本=v4.0,配置文件=客户端。WindowsFormsApplication1`。NET 4.0客户端配置文件也非常旧,自2016年1月12日起不再受Microsoft支持:。您没有更新到.NET 4.8有什么原因吗?继续使用过时和不受支持的软件将导致此类兼容性错误。您使用的是8.0.19吗?该错误应该在8.0.18中修复:。如果8.0.19仍然存在问题,那么我建议切换到没有第三方依赖关系的版本。