試圖從表中得到簡單的計數結果,例外情況如下。 試過不同的選擇statemens,這也是例外:「SELECT * FROM goods
」,但「SELECT col1, col2 FROM goods
」 - 無一例外地工作。我究竟做錯了什麼?從工作臺上選擇這些選項。.Net MySql錯誤「給定的密鑰不在字典中」
給定的鍵不在字典中。 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 MySql.Data.MySqlClient.ResultSet.LoadColumns(的Int32數numCols)。 MySqlClient.ResultSet..ctor(駕駛員d,的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 MySql.Data.MySqlClient.MySqlCommand.ResetReader()在 MySql.Data.MySqlClient.MySqlCommand.ExecuteReader(的CommandBehavior 行爲)。的ExecuteReader()
在MySqlSybaseComparer.DbTester.Test(字符串&誤差) 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
我希望會有一個名爲商品的表,並且在您的web配置中指定了正確的數據庫名稱,請嘗試此操作也可以從商品中選擇isnull(count(*),0)並使用ExecuteScalar – dennis