我正在编写一个程序,让用户:
- 连接到用户指定的(任意)数据库
- 在单独的 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 查询。这不是否定了有一个班级为我处理这些东西的全部意义吗?
无论如何,我希望有人可以解释如何将数据库加载和保存到数据集中,或者让我更好地了解如何做我想做的事情。我总是可以自己一起解析命令,但这似乎不是最好的解决方案。