C# “惊人的错误”;字典中不存在给定的键。”;
我使用C# “惊人的错误”;字典中不存在给定的键。”;,c#,mysql,sql,C#,Mysql,Sql,我使用SqlCe作为我的数据库,但当我将所有表复制到MySql数据库时,这个异常开始了 我的代码: using (MySqlConnection conSQL = new MySqlConnection(conSQLSTR)) { try { conSQL.Open(); } catch (MySqlException e) { string errMsg = e.Message; MessageBox.Sh
SqlCe
作为我的数据库,但当我将所有表复制到MySql
数据库时,这个异常开始了
我的代码:
using (MySqlConnection conSQL = new MySqlConnection(conSQLSTR))
{
try
{
conSQL.Open();
}
catch (MySqlException e)
{
string errMsg = e.Message;
MessageBox.Show(errMsg, "error", MessageBoxButtons.OK,
MessageBoxIcon.Error);
return false;
}
using (MySqlCommand comSQL = conSQL.CreateCommand())
{
comSQL.CommandText = "SELECT " + Column + " FROM " + TableName
+ " WHERE " + Column + "=@param";
comSQL.Parameters.Add("@param", MySqlDbType.VarChar);
comSQL.Parameters["@param"].Value = Value;
MySqlDataReader drSQL;
bool hasRows = false;
try
{
drSQL = comSQL.ExecuteReader();
hasRows = drSQL.Read();
}
catch (MySqlException e)
{
string errMsg =e.Message;
MessageBox.Show(errMsg, "error", MessageBoxButtons.OK,
MessageBoxIcon.Error);
}
if (!hasRows)
return false;
else
{
return true;
};
}
}
例外情况:
字典中不存在给定的键
行:
这很有趣,因为此异常未显示在消息框中!这就像一个运行时错误,我的TRY
似乎根本不起作用
using (MySqlConnection conSQL = new MySqlConnection(conSQLSTR))
后台MySQL将使用
字典
将连接字符串解析为键/值对。确保您的连接字符串格式正确 这是一条非常惊人的mysql连接器错误消息,因为它太笼统,没有描述太多细节或确切问题来源的线索
当您看到此错误时,您应该检查传递给最近mysql执行的命令的任何字符串,特别是
ConnectionString
,数据库名
,表名
,列名
,以了解其价值,因为此线程有点旧。但今天我遇到了同样的错误。起初还不清楚出了什么问题
将MariaDB升级到10.0.24-MariaDB-7(Ubuntu 16.04)后,我的.Net应用程序在打开连接时出错:“字典中不存在给定的密钥。”
将mysql.data.dll更新为最新版本修复了此问题。()错误通常是惊人的。。更令人惊讶的是:)您的尝试没有成功,因为您正在捕获
MySqlException
,而不是Exception
,您只捕获MySqlException
。听起来这不是一个例外。你在哪里看到的?你得到完整的堆栈跟踪了吗?还要注意的是,在else
块末尾不需要分号,您可以删除整个if/else
块,只需使用return hasRows代码>。我认为我的橡皮鸭+乔恩的评论让索纳的评论不那么令人惊讶:)
using (MySqlConnection conSQL = new MySqlConnection(conSQLSTR))