我使用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;
};
}
}
例外:
字典中没有给定的密钥。
行:
drSQL = comSQL.ExecuteReader();
这很有趣,因为消息框中没有显示此异常!它就像一个运行时错误,似乎我的TRY
根本不起作用!
答案 0 :(得分:1)
using (MySqlConnection conSQL = new MySqlConnection(conSQLSTR))
在幕后,MySQL将使用Dictionary
将您的连接字符串解析为键/值对。确保您的连接字符串格式正确。
答案 1 :(得分:1)
这是一个非常令人惊讶的 mysql连接器错误消息,因为它太通用了,没有详细说明或确切问题来源的线索。
当您看到此错误时,您应该检查传递的字符串到最近执行的mysql {0},ConnectionString
,Database Name
,{{1} }。
答案 2 :(得分:1)
因为这个线程有点旧,所以它的价值。但今天我遇到了同样的错误。起初它并不清楚出了什么问题。
将MariaDB升级到10.0.24-MariaDB-7(Ubuntu 16.04)后,我的.Net应用程序在打开连接时出错:"字典中没有给定的密钥。"。
将mysql.data.dll更新到最新版本修复它。 (https://dev.mysql.com/downloads/connector/net/6.9.html)