Накидал примерный код, который надо допилить. public partial class Form1 : Form { System.Data.SqlClient.SqlConnection con1; System.Data.SqlClient.SqlDataAdapter da1; System.Data.SqlClient.SqlCommand selCmd; System.Data.SqlClient.SqlCommandBuilder b; System.Data.DataSet ds1; System.Data.DataTable dt1; string selQry; public Form1() { InitializeComponent(); } private void Form1_Load(object sender, System.EventArgs e) { con1 = new System.Data.SqlClient.SqlConnection(); da1 = new System.Data.SqlClient.SqlDataAdapter(); ds1 = new System.Data.DataSet(); b = new System.Data.SqlClient.SqlCommandBuilder(da1); selCmd = new System.Data.SqlClient.SqlCommand(); selQry = "SELECT ид as ID, первый, второй, третий, ключ FROM Test where [ключ]=@p0"; selCmd.Parameters.Add("p0", System.Data.SqlDbType.Int, 5, "ключ"); selCmd.Connection = con1; selCmd.CommandText = selQry; da1.SelectCommand = selCmd; dt1 = new System.Data.DataTable(); try { con1.ConnectionString = @"Data Source=SQL-SRV;Failover Partner=SQL-SRV;Initial Catalog=DATA;Persist Security Info=True;User ID=AM;Password=1;Replication=True"; con1.Open(); MessageBox.Show("Соединение успешное!"); selCmd.Parameters["p0"].Value = 1; da1.Fill(ds1, "Test"); grid2.DataSource = ds1.Tables["Test"].DefaultView; grid2.Refresh(); } catch (System.Exception ex) { MessageBox.Show("Соединение отсутствует!" + ex.Message); } } private void grid2_UserDeletedRow(object sender, DataGridViewRowEventArgs e) { dt1.GetChanges(System.Data.DataRowState.Deleted); da1.DeleteCommand = b.GetDeleteCommand(); if (dt1 != null) { da1.Update(ds1.Tables[0]); } } private void grid2_CellValidated(object sender, DataGridViewCellEventArgs e) { dt1.GetChanges(System.Data.DataRowState.Added | System.Data.DataRowState.Modified); da1.UpdateCommand = b.GetUpdateCommand(); da1.InsertCommand = b.GetInsertCommand(); if (dt1 != null) { da1.Update(ds1.Tables[0]); } } private void grid2_CellEndEdit(object sender, DataGridViewCellEventArgs e) { grid2.Rows[grid2.CurrentRow.Index].Cells["ключ"].Value = 1; } } Таблица Test(ид - ключевое поле счетчик, первый, второй, третий - текст, ключ - число) 1. После добавления записей в грид(DataGridView) закрываю форму, сохраняются все записи кроме последней. 2. Если добавить одну строчку, потом вторую, и сразу же попытаться удалить первую, то возникнет исключение Нарушение параллелизма: DELETECOMMAND. 3. Не отображается ключевое поле в гриде, только после повторного открытия формы. Пожалуйста помогите!