如何访问当前项目中的DataSet中的数据?

时间:2015-03-12 02:12:41

标签: c# linq visual-studio visual-studio-2013 dataset

我正在尝试从Windows窗体项目中的本地数据库访问基本表。我似乎已正确创建数据库,并按照预期在我的解决方案资源管理器中导入数据集。

但是,我仍然坚持如何实际访问数据库中的数据。我尝试了许多不同的解决方案,但我似乎无法到达任何地方。

这是我迄今为止所取得的成就:

Solution Explorer Screenshot

但我无法弄清楚如何对数据集进行查询,无论是选择,更新还是删除行。

我最接近获取数据来自此处的代码:

    InventoryDatabaseDataSet context = new InventoryDatabaseDataSet();

    var inv = context.Tables["Inventory"];

    var all = inv.Select();

但它并没有返回任何看似有效的数据。

如何查询我的数据集?我理解Linq是查询的常用方法,但我不明白如何达到能够做这样的事情。

非常感谢任何帮助,谢谢!

2 个答案:

答案 0 :(得分:0)

在DataSet中存储数据后,通过DataTable对象读取DataSet 类似地,DataRow的对象用于读取表的行。 以下是示例代码

InventoryDatabaseDataSet ds = new new InventoryDatabaseDataSet();;
DataTable dt = new DataTable();

da.SelectCommand = new SqlCommand(@"SELECT * FROM FooTable", connString);
da.Fill(ds, "FooTable");
dt = ds.Tables["FooTable"];

foreach (DataRow dr in dt.Rows)
{
    MessageBox.Show(dr["Column1"].ToString());
}

答案 1 :(得分:0)

解决方案资源管理器中的DataSet项表示许多类型。就像StringInt32Form类型一样,InventoryDatabaseDataSet是一种类型。就像其他类型一样,您可以在代码中创建一个实例,然后使用它。

您还会发现那些组件类型已添加到工具箱中,可以像设计其他控件和组件一样添加到设计器中的表单中。

您还可以从“数据源”窗口拖动项目,让设计人员生成适当的对象和代码。例如,如果将表从“数据源”窗口拖到表单,它将生成一个DataSet来存储数据,一个表适配器用于从数据库中检索数据并保存更改,{{1}要显示数据,DataGridView要在BindingSourceDataTable以及DataGridView之间进行链接以导航数据。

如果您确实使用了设计器,那么您将通过调用表适配器上的BindingNavigator来查看生成的代码来检索数据,并通过调用Fill来保存更改。如果你想在代码中自己做,那么你可以这样做来检索:

Update

这就是保存:

var data = new InventoryDatabaseDataSet();

using (var adapter = new InventoryTableAdapter())
{
    adapter.Fill(data);
}

this.InventoryBindingSource.DataSource = data.Inventory;
this.InventoryDataGridView.DataSource = this.InventoryBindingSource;