Странности в работе CommandBuilder

при работе над дипломным проектом столкнулся с неправильной работой Commanduilder. Например, при отправке запроса на добавление записи в бд она добавляется дважды Добавление записи (возможно, это связано с добавлением записи как в DataSource, так и в DataGridView, однако к dgv данные привязываются в коде), так же при изменении записи разница между данными таблиц не фиксируются и запрос при этом выглядит крайне странно Изменение записи1 Изменение записи2 введите сюда описание изображения.

Вот листинг:

try
        {
            //происходит при изменении ячейки
            //dt.Rows[e.RowIndex][e.ColumnIndex] = suppliersGridView.CurrentCell.Value;
            //SQLHelper.UpdateData(q, ds);
        } catch (ArgumentOutOfRangeException ex) { MessageBox.Show("Error", ex.Message); }
        if (e.ColumnIndex == suppliersGridView.ColumnCount - 1)
        {
            //происходит при изменении последней ячейки записи
            SQLHelper.ExecuteReader("DBCC CHECKIDENT ('Suppliers', RESEED, " + e.RowIndex + ")");
            DataRow newRow = dt.NewRow();
            for (int i = 1; i < suppliersGridView.ColumnCount; i++) {
                newRow[i] = suppliersGridView.CurrentRow.Cells[i].Value; }
            dt.Rows.Add(newRow);
            SQLHelper.UpdateData(q, ds);
        }

SQLHelper...

public static DataSet UpdateData(string query,DataSet ds)
        {
            SqlConnection con = GetConn();
            con.Open();
            SqlDataAdapter adapter = new SqlDataAdapter(query, con);
            SqlCommandBuilder cmdBuilder = new SqlCommandBuilder(adapter);
            MessageBox.Show(cmdBuilder.GetUpdateCommand().CommandText);
            MessageBox.Show(cmdBuilder.GetInsertCommand().CommandText);
            MessageBox.Show(cmdBuilder.GetDeleteCommand().CommandText);
            adapter.Update(ds);
            ds.Clear();
            adapter.Fill(ds);
            con.Close();
            return ds;
        }

Ответы (0 шт):