C# mysql example Command.ExecuteReader throws exception

c#, mysql

Solution

I've been having this problem and I did some research. After a while, I just fixed this problem.

My problem was the database table encoding. I had `utf32_unicode_ci`, and I changed it to `utf8_unicode_ci`. It works perfectly now.

Hope you have some luck on it.

Problem

I am writing a segment of C# code to get some data from mysql database. I have started with ready-made example but it gave me an error at `rdr = cmd.ExecuteReader()` A screen Shot of the thrown exception is shown below as well ``` using System; using MySql.Data.MySqlClient; public class Program { static void Main() { string serverName = "192.168.0.012"; string port = "1234"; string db = "cust_db"; string userID = "root"; string password = "pass"; string cs = "Server=" + serverName + ";Port=" + port + ";Database=" + db + ";Uid=" + userID + ";password=" + password; MySqlConnection conn = null; MySqlDataReader rdr = null; try { conn = new MySqlConnection(cs); conn.Open(); string stm = "SELECT * FROM cust_tb"; MySqlCommand cmd = new MySqlCommand(stm, conn); rdr = cmd.ExecuteReader(); while (rdr.Read()) { Console.WriteLine(rdr.GetInt32(0) + ": " + rdr.GetString(1)); } } catch (MySqlException ex) { Console.WriteLine("Error: {0}", ex.ToString()); } finally { if (rdr != null) { rdr.Close(); } if (conn != null) { conn.Close(); } } } } 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 MySql.Data.MySqlClient.MySqlCommand.ExecuteReader() at Program.Main() in c:\Users\omran.alhammadi\Desktop\csMysqlConnection\csMysqlConnection\Program.cs:line 28 at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args) at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args) at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly() at System.Threading.ThreadHelper.ThreadStart_Context(Object state) at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.ThreadHelper.ThreadStart()</StackTrace><ExceptionString>System.Collections.Generic.KeyNotFoundException: The given key was not present in the dictionary. 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 MySql.Data.MySqlClient.MySqlCommand.ExecuteReader() at Program.Main() in c:\Users\omran.alhammadi\Desktop\csMysqlConnection\csMysqlConnection\Program.cs:line 28 at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args) at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args) at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly() at System.Threading.ThreadHelper.ThreadStart_Context(Object state) at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.ThreadHelper.ThreadStart()</ExceptionString></Exception></TraceRecord> An unhandled exception of type 'System.Collections.Generic.KeyNotFoundException' occurred in mscorlib.dll Additional information: The given key was not present in the dictionary. The program '[17084] csMysqlConnection.vshost.exe: Managed (v4.0.30319)' has exited with code -1 (0xffffffff). ```

Original source

Related problems