Для операторов обновления вы должны использовать объект SqlCommand.
SqlCommand cmd = new SqlCommand( "INSERT INTO my_table (name, lastname) VALUES ('John', 'Doe')", My.Settings.ConnectionString);
cmd.ExectureNonQuery();
Однако рекомендуется использовать параметризованные SQL-запросы, если по какой-либо причине вы получаете данные от пользователя, чтобы уменьшить вероятность атак SQL-инъекцией
SqlCommand cmd = new SqlCommand( "INSERT INTO my_table (name, lastname) VALUES (@FirstName, @LastName)", My.Settings.ConnectionString);
cmd.Parameters.Add("FirstName", SqlDbType.NVarChar);
cmd.Parameters.Add("LastName", SqlDbType.NVarChar);
cmd.Parameters[0].Value = txtFirstName.Text;
cmd.Parameters[1].Value = txtLastName.Text;
cmd.ExecuteNonQuery();
Ответьте на другой вопрос:
Да. Если было нарушение первичного ключа, будет выдано исключение SQLException. Вы можете поймать его с помощью блока try-catch и показать сообщение или сделать что угодно.
try
{
cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
MessageBox.Show("Error! " + ex.Message);
}