Попытка получить простой счет из таблицы приводит к исключению ниже. Пробовал разные избранные statemens, которые также делают исключение: «SELECT * FROM goods
», но «SELECT col1, col2 FROM goods
» - работает без исключения. Что я делаю не так? С рабочего места работают эти селекторы.. Net MySql error «Указанный ключ отсутствовал в словаре»
Данный ключ отсутствует в словаре. System.Collections.Generic.KeyNotFoundException: данный ключ не был указан в словаре. в System.Collections.Generic.Dictionary`2.get_Item (ключ TKey) в MySql.Data.MySqlClient.MySqlField.SetFieldEncoding() в MySql.Data.MySqlClient.NativeDriver.GetColumnData (MySqlField поле)
в MySql. Data.MySqlClient.NativeDriver.GetColumnsData (MySqlField [] столбцы) в MySql.Data.MySqlClient.Driver.GetColumns (количество Int32)
на MySql.Data.MySqlClient.ResultSet.LoadColumns (Int32 numCols) на MySql.Data. MySqlClient.ResultSet..ctor (водитель д, Int32 StatementId, Int32 numCols) при MySql.Data.MySqlClient.Driver.NextResult (Int32 StatementId, булева сила) в MySql.Data.MySqlClient.MySqlDataReader.NextResult() при MySql.Data.MySqlClient.MySqlDataReader.Close() в MySql.Data.MySqlClient.MySqlCommand.ResetReader() в MySql.Data.MySqlClient.MySqlCommand.ExecuteReader (CommandBehavior поведение) при MySql.Data.MySqlClient.MySqlCommand. ExecuteReader()
в MySqlSybaseComparer.DbTester.Test (String & ошибки) в C: \ MySqlSybaseComparer \ DbTester.cs: строка 68
фрагмент кода:
using (MySqlConnection conn = new MySqlConnection(ConStrMySql))
{
try
{
conn.Open();
using (MySqlCommand cmd = new MySqlCommand("SELECT count(*) FROM goods", conn))
{
using (MySqlDataReader reader = cmd.ExecuteReader())
{
if (reader.Read())
MessageBox.Show(reader[0].ToString());
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message + Environment.NewLine + ex.ToString(););
}
conn.Close();
}
строка подключения к DB: Server=localhost; Database=art; Uid=ramunas; Pwd=xxxx; AllowUserVariables=True;
Когда у у вас есть только счетчик (*), который будет целочисленной переменной, было бы лучше использовать executeScalar Int32 count = Convert.ToInt32 (cmd.ExecuteScalar()); – dennis
ExecuteScalar исключает также. – Ramunas
Надеюсь, что будет таблица, называемая товаром, и u укажут правильное имя базы данных в вашей веб-конфигурации, пожалуйста, попробуйте также выбрать isnull (count (*), 0) из товаров и использовать ExecuteScalar – dennis