试图从表中得到简单的计数结果,例外情况如下。 试过不同的选择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