Я искал некоторые сообщения, но все же не могу заставить их работать.Редактирование datagridview во время выполнения и база данных обновлений
У меня есть приложение окна, написанный на C#, Здесь я связать DataGridView к моей базе данных:
public static DataSet GetDataSet(string sql)
{
using (SqlConnection cn = new SqlConnection(constr))
{
SqlDataAdapter da = new SqlDataAdapter(sql, cn);
DataSet ds = new DataSet();
da.Fill(ds);
return ds;
}
}
и я связать DataGridView в другом классе:
string sql = "select Amount, Price, Description from myTable";
ds = DbHelper.GetDataSet(sql);
dataGridView2.DataSource = ds.Tables[0];
Я создал кнопку пользователь для обновления базы данных после редактирования данных datagridview:
string sql = "select Amount, Price, Description from myTable";
DbHelper.UpdateDataSet(sql, ds);
MessageBox.Show("done");
public static void UpdateDataSet(string sql, DataSet ds)
{
using (SqlConnection cn = new SqlConnection(constr))
{
SqlDataAdapter da = new SqlDataAdapter(sql, cn);
da.Update(ds);
}
}
Адрес erro r, встречается на линии da.Update(ds);
:
Обновление требует действительной UpdateCommand при передаче коллекции DataRow с измененными строками.
Спасибо за помощь.
EDIT я могу заставить его работать с этим:
SqlCommandBuilder commandBuilder = new SqlCommandBuilder(da);
da.UpdateCommand = commandBuilder.GetUpdateCommand();
Но только тогда, когда я показываю ключ в DataGridView, а также, в противном случае:
Dynamic SQL поколения для UpdateCommand не поддерживается с помощью команды SelectCommand, которая не возвращает никакой информации о столбце.
Как преодолеть это, если я не хочу показывать ключ в datagridview?
Как вы ожидаете обновить базу данных оператором 'SELECT'? –