Я пишу программу, которая позволяет пользователю:
- Подключение к (произвольной) базе данных, указанной пользователем
- Просмотр всех таблиц в этой базе данных в отдельных DataGridViews
- Редактируйте их в программе, генерируйте случайные данные и смотрите результаты
- Выберите, чтобы зафиксировать эти изменения или отменить
Итак, я обнаружил класс DataSet, который, похоже, способен хранить все, что может делать база данных, и решил, что лучше всего здесь загрузить все в один набор данных, позволить пользователю отредактировать его, а затем сохранить набор данных обратно в базу данных. Проблема в том, что я могу найти единственный способ загрузить таблицы базы данных:
set = new DataSet();
DataTable schema = connection.GetOleDbSchemaTable(
OleDbSchemaGuid.Tables,
new string[] { null, null, null, "TABLE" });
foreach (DataRow row in schema.Rows)
{
string tableName = row.Field<string>("TABLE_NAME");
DataTable dTable = new DataTable();
new OleDbDataAdapter("SELECT * FROM " + tableName, connection).Fill(dTable);
dTable.TableName = tableName;
set.Tables.Add(dTable);
}
хотя кажется, что должен быть более простой способ, учитывая, что наборы данных, похоже, предназначены именно для этой цели. Настоящая проблема, хотя, когда я пытаюсь сохранить эти вещи. Чтобы использовать метод OleDbDataAdapter.Update (), мне сказали, что я должен предоставить действительные запросы INSERT. Разве это не сводит на нет весь смысл наличия класса, чтобы справиться с этим для меня?
В любом случае, я надеюсь, что кто-нибудь может объяснить, как загрузить и сохранить базу данных в наборе данных, или, возможно, дать мне лучшее представление о том, как сделать то, что я пытаюсь сделать. Я всегда мог разобрать команды вместе, но это не лучшее решение.