программная работа с базой данных

программная работа с базой данных

от Владимир Минеев -
Количество ответов: 2

Система win10, moodle 3.10 стандартный дистрибутив, базу просматриваю heidisql 11.1

Русские буквы вводимые штатными средствами отображаются в базе нормально, но если 

byte[] bytes = Encoding.Default.GetBytes("русский текст");

            string test = Encoding.UTF8.GetString(bytes);

            string sql = "Insert Into mdl_user (password) values ('"+ test+"') ";

            MySqlCommand command = new MySqlCommand(sql, conn);

            command.ExecuteNonQuery();

Кодировки все перебрал, не помогает. Русские буквы не отображаются нормально. Пожалуйста помогите.
Спасибо

В ответ на Владимир Минеев

Re: программная работа с базой данных

от Владимир Минеев -
Все просто в строке коннекта обязательно " charset=utf8 "
Дополнительных преобразований не надо.
string connStr = "server=localhost;charset=utf8;user=root;database=mysql; ... ";
MySqlConnection conn = new MySqlConnection(connStr);
conn.Open();
string test = "русский текст";
string sql = "Insert Into mdl_user (password) values ('"+ test+"') ";
MySqlCommand command = new MySqlCommand(sql, conn);
command.ExecuteNonQuery();
В ответ на Владимир Минеев

Re: программная работа с базой данных

от Alex Djachenko -
Изображение пользователя Developers Изображение пользователя Майнтейнер перевода Изображение пользователя ООО "Открытые Технологии" Изображение пользователя Тестер Moodle Изображение пользователя Эксперт по Moodle
Крайне не советую ничего писать напрямую в бд. Многие действия в системе предполагают каскадное добавление или же запуск триггеров после добавления. При прямом редактировании этого не происходит. Не говоря уже о том, что рано или поздно, но гарантированно, это приводит к потере консистентности.
Пользуйтесь rest-api или пишите плагины, которые обращаются с помощью внутреннего программного api.