2015-01-19 11 views
0

У меня есть: 1) C# WPF DataGrid 2) MS Access db, который включает одну таблицу («Temp»)!
Я уже много читал форумы и статьи, но я не нахожу ответа! Я хочу добавить/отредактировать/удалить данные в MS Access DB с помощью DataGrid! Я пробовал этот код, но он не работает!C# WPF oledb MS Access

private void Button_Click_3(object sender, RoutedEventArgs e) 
    { 
     if (_dataSet != null && _dataSet.Tables[0] != null && _dataSet.HasChanges(DataRowState.Modified)) 
     { 
      DataTable dt = _dataSet.Tables[0].GetChanges(DataRowState.Modified); 
      adapter.Update(dt); 
     } 
     adapter.Update(_dataSet.Tables["Temp"]); 
    } 

Я из Украины, поэтому translalte u! У меня есть ошибка (я надеюсь, что все правильно): «Динамическое генерирование SQL для DeleteCommand не поддерживается для SelectCommand, не возвращает никакой информации о столбце столбца» Ошибка, подобная этой, всегда возвращается при использовании обновления или объявления данные в DataGrid! ПОЖАЛУЙСТА, помогите мне! Спасибо вам за все!

ответ

0

Возможно, вы будете использовать ORM (реляционное сопоставление объектов) для доступа к данным. Для .NET существуют: Entity Framework, Fluent Nhibernate, Dapper (micro-orm) - возможно, варианты для вас, потому что это очень просто. Также обратите внимание на шаблон MVVM (опция beast для WPF). Хорошая статья с примером: http://msdn.microsoft.com/en-us/magazine/dd419663.aspx

+0

Большое спасибо! Я смотрю, и скоро буду думать о MVV! –

0

A есть ответ! Для работы с этим кодом ему нужна ячейка ключа (столбец)! Если этого не происходит, commandBuilder не может получить команды по умолчанию, поэтому вы всегда получаете ошибки! Вот код: adapter = new OleDbDataAdapter(comand, con); _dataSet = new DataSet(); adapter.Fill(_dataSet, "TargetAndProbability"); cb = new OleDbCommandBuilder(adapter); cb.QuotePrefix = "[";// it's need if your cells contains others symbols cb.QuoteSuffix = "]";

Чем все очень просто!

adapter.Update(_dataSet, "TargetAndProbability"); 
Смежные вопросы