Странности в работе CommandBuilder
при работе над дипломным проектом столкнулся с неправильной работой Commanduilder. Например, при отправке запроса на добавление записи в бд она добавляется дважды
(возможно, это связано с добавлением записи как в DataSource, так и в DataGridView, однако к dgv данные привязываются в коде), так же при изменении записи разница между данными таблиц не фиксируются и запрос при этом выглядит крайне странно
.
Вот листинг:
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;
}