Приветствую всех! В этой статье я буду описывать частые проблемы которые встречаются при работе с базами данных в ADO.NET. Тема будет расти по мере возможности, добавляя новые решения проблема при работе в ADO.NET
- Как после вставки данных, сохранить их в базе данных C#?
Все очень просто, если вы правильно используете команду Insert и ваши данные вносятся в базу, а после выхода из программы они пропадают. То тут есть не сколько вариантов решения, проблема заключается в том, что база данных при запуске из студии перезаписывает и базу данных, в этом случаи стоит перенести ее по другому пути, либо в решении установить не копировать. Так же если вы будите запускать программу не через студию, такой проблемы не будет.
- После вставки данных, в базу данных, русские символы заменяются вопросительным знаком C#
Все дело в кодировки исправить эту ситуацию можно не сколькими способами. Установить кодировку в студии при локальной базе данных не возможно, но можно сделать в Microsoft SQL Server Management Studio при создании базы данных. Так же можно указать при вставки данных символ N что позволяет сохранить в utf8 кодировке.
1 2 |
insertCommand.CommandText = String.Format("INSERT Registr VALUES (N'{0}', N'{1}', N'{2}', N'{3}', N'{4}')", textBox1.Text, textBox2.Text, textBox3.Text, textBox4.Text, textBox5.Text); //создаем команду вставки |
Есть еще один способ и он является более правильным использовать параметры команды:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
using (var con = new SqlConnection(@"Data Source = (LocalDB)\MSSQLLocalDB; AttachDbFilename =" + Application.StartupPath + @"\Database1.mdf; Integrated Security = True")) { string sql = "insert into [Registr] (Имя, Фамилия, Отчество, Логин, Пароль) values (@Имя, @Фамилия, @Отчество, @Логин, @Пароль)"; SqlCommand cmd = new SqlCommand(sql, con); // Читатели cmd.Parameters.AddWithValue("@Имя", textBox1.Text); cmd.Parameters.AddWithValue("@Фамилия", textBox2.Text); cmd.Parameters.AddWithValue("@Отчество", textBox3.Text); cmd.Parameters.AddWithValue("@Логин", textBox4.Text); cmd.Parameters.AddWithValue("@Пароль", textBox5.Text); con.Open(); int rowAffected = cmd.ExecuteNonQuery(); MessageBox.Show("Пользователь был добавлен" + rowAffected); } |