{"id":1959,"date":"2022-08-30T15:20:52","date_gmt":"2022-08-30T15:20:52","guid":{"rendered":"https:\/\/unknownerror.org\/index.php\/2013\/12\/05\/asp-net-mysql-unable-to-read-any-data-collection-of-common-programming-errors\/"},"modified":"2022-08-30T15:20:52","modified_gmt":"2022-08-30T15:20:52","slug":"asp-net-mysql-unable-to-read-any-data-collection-of-common-programming-errors","status":"publish","type":"post","link":"https:\/\/unknownerror.org\/index.php\/2022\/08\/30\/asp-net-mysql-unable-to-read-any-data-collection-of-common-programming-errors\/","title":{"rendered":"ASP .Net &#8211; MySql &#8211; Unable to read any data-Collection of common programming errors"},"content":{"rendered":"<p>I am stuck with a problem and do not have a single idea WTF is happening. I&#8217;ve got an C# web application that needs to communicate with a MySQL db using web services. I can use methods to insert data, but whenever I try to read anything (ExecuteReader or ExecuteScalar) it fails with this very strange message:<\/p>\n<blockquote>\n<p>The given key was not present in the dictionary.<\/p>\n<\/blockquote>\n<p>Now, the web service uses this class to communicate with the db:<\/p>\n<pre><code> public class DatabaseHelper\n{\n    private MySqlCommand cmd;\n    private MySqlConnection con;\n    public DatabaseHelper()\n    {\n        String server = \"localhost\";\n        String database = \"testdb\";\n        String password = \"password\";\n        String username = \"root\";\n\n\n        String connString = \"Server = \" + server + \"; Database = \" + database + \"; Uid = \" + username + \"; Pwd = \" + password + \"; default command timeout=60;\";\n        con = new MySqlConnection();\n        con.ConnectionString = connString;\n\n        cmd = new MySqlCommand();\n\n        cmd.Connection = con;\n    }\n\n    public void RunExecuteNonQuery(string sql, MySqlParameter[] param)\n    {\n        try\n        {\n\n            cmd.CommandText = sql;\n            if (param != null)\n            {\n                cmd.Parameters.AddRange(param);\n            }\n            cmd.CommandText = sql;\n            con.Open();\n            cmd.ExecuteNonQuery();\n            con.Close();\n            cmd.Parameters.Clear();\n\n        }\n        catch (MySqlException ex)\n        {\n            con.Close();\n\n        }\n    }\n    public object RunExecuteScalar(string sql, MySqlParameter[] param)\n    {\n        if (param != null)\n        {\n            cmd.Parameters.AddRange(param);\n        }\n        cmd.CommandText = sql;\n        object ret;\n        con.Open();\n        ret = cmd.ExecuteScalar();\n        con.Close();\n        cmd.Parameters.Clear();\n        return ret;\n    }\n\n    public MySqlDataReader RunExecuteDataReader(string sql, MySqlParameter[] param)\n    {\n        if (param != null)\n        {\n            cmd.Parameters.AddRange(param);\n        }\n        cmd.CommandText = sql;\n        MySqlDataReader ret = null;\n\n        con.Open();\n\n       ret = cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection);\n       cmd.Parameters.Clear();\n\n\n        return ret;\n    }\n}\n<\/code><\/pre>\n<p>It fails on cmd.ExecuteReader or cmd.ExecuteScalar!<\/p>\n<p>On the other hand, a method from the web service looks as following:<\/p>\n<pre><code> [WebMethod]\n    public string[] GetCategories()\n    {\n        String sql = \"SELECT * FROM category\";\n        DatabaseHelper dh = new DatabaseHelper();\n        MySqlDataReader dr = dh.RunExecuteDataReader(sql, null);\n        List categories = new List();\n        while (dr.Read())\n        {\n            categories.Add(dr[0].ToString());\n        }\n        dr.Close();\n\n        return categories.ToArray();\n    }\n<\/code><\/pre>\n<p>It is really strange since the error is very cryptic (I am not using a dictionary at all) and I have used this same class in many other applications. I tried this same solution on a different computer with the same result. I have even tried different versions of MySql.Data.dll<\/p>\n<p>The error stack:<\/p>\n<blockquote>\n<blockquote>\n<p>System.Collections.Generic.KeyNotFoundException was unhandled by user code HResult=-2146232969 Message=The given key was not present in the dictionary. Source=mscorlib StackTrace: at System.Collections.Generic.Dictionary`2.get_Item(TKey key) at MySql.Data.MySqlClient.CharSetMap.GetChararcterSet(DBVersion version, String CharSetName) at MySql.Data.MySqlClient.NativeDriver.GetFieldMetaData41() at MySql.Data.MySqlClient.NativeDriver.GetFieldMetaData() at MySql.Data.MySqlClient.NativeDriver.ReadColumnMetadata(Int32 count) at MySql.Data.MySqlClient.MySqlDataReader.NextResult() at MySql.Data.MySqlClient.MySqlCommand.ExecuteReader(CommandBehavior behavior) at Panopticon.DataLayer.DatabaseHelper.RunExecuteDataReader(String sql, MySqlParameter[] param) in C:\\Users\\Visar\\Documents\\Visual Studio 2010\\Projects\\TestApp\\TestApp\\DataLayer\\DatabaseHelper.cs:line 84 at Panopticon._Default.Page_Load(Object sender, EventArgs e) in C:\\Users\\Visar\\Documents\\Visual Studio 2010\\Projects\\TestApp\\TestApp\\Default.aspx.cs:line 16 at System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) at System.Web.UI.Control.OnLoad(EventArgs e) at System.Web.UI.Control.LoadRecursive() at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)<br \/>\nInnerException:<\/p>\n<\/blockquote>\n<\/blockquote>\n<p id=\"rop\"><small>Originally posted 2013-12-05 16:32:03. <\/small><\/p>","protected":false},"excerpt":{"rendered":"<p>I am stuck with a problem and do not have a single idea WTF is happening. I&#8217;ve got an C# web application that needs to communicate with a MySQL db using web services. I can use methods to insert data, but whenever I try to read anything (ExecuteReader or ExecuteScalar) it fails with this very [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-1959","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/posts\/1959","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/comments?post=1959"}],"version-history":[{"count":0,"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/posts\/1959\/revisions"}],"wp:attachment":[{"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/media?parent=1959"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/categories?post=1959"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/tags?post=1959"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}