Ошибка MySql.Data.MySqlClient.MySqlDataReader.GetString()
От: lesovick Россия  
Дата: 22.03.11 19:47
Оценка:
Программирую на C#.

Есть база данных MySQL, содержащая русские символы. Программа работает, но вместо русских символов на выходе выдаёт знаки вопроса:

            string connectionString = "Database=mydb3;Data Source=localhost;User Id=root;Password=pass;charset=cp1251";
            using (MySqlConnection connection = new MySqlConnection(connectionString))
            {
                string queryString1 = "SHOW VARIABLES";
                string queryString2 = "SET character_set_results = \"cp1251\",character_set_database = \"cp1251\",character_set_server = \"cp1251\",character_set_client = \"cp1251\",character_set_connection = \"cp1251\";";
                string queryString3 = @"SELECT s.Name
                                            FROM Songs AS s, Autors AS a
                                            WHERE s.AutorID = a.ID;";
                MySqlCommand preCommand = new MySqlCommand(queryString2, connection);
                MySqlCommand command = new MySqlCommand(queryString1, connection);
                connection.Open();
                MySqlDataReader preReader = preCommand.ExecuteReader();
                while (preReader.Read())
                { 
                }
                preReader.Close();
                MySqlDataReader reader = command.ExecuteReader();
                try
                {
                    textBox1.Text = "";
                    while (reader.Read())
                    {
                        textBox1.Text = textBox1.Text + reader.GetString(0) + "=" + reader.GetString(1) + "\r\n";
                    }
                }
                catch (Exception ex)
                {
                    textBox2.Text = ex.Message;
                }
                finally
                {
                    // Always call Close when done reading.
                    reader.Close();
                }

                command = new MySqlCommand(queryString3, connection);
                reader = command.ExecuteReader();
                textBox3.Text = "";
                while (reader.Read())
                {
                    //textBox3.Text = textBox3.Text + Encoding.Default.GetString((byte[])reader[0]) + "\r\n";
                    textBox3.Text = textBox3.Text + reader.GetString(0) + "\r\n";
                }
                reader.Close();

                connection.Close();
            }

А если вместо reader.GetString(0) написать Encoding.Default.GetString((byte[])reader[0]) всё работает. Что надо сделать, чтобы функция GetString срабатывала правильно?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.