2

我正在学习 ADO.Net [C#] 并希望使用 DataGridView.DataSource = DataSet.tables[] 命令填充不同的 DataGridView。但我只知道如何将 1 个表填充到 1 个数据适配器,是否可以查询整个数据库并将所有表放在一个数据集中,这样我就可以使用 dataset.tables[table index] 选项填充直到 datagridview?

例子:

        OleDbConnection con = new OleDbConnection();
        con.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;data source =.accdb";

        ds = new DataSet();
        da = new OleDbDataAdapter("SELECT * ", con);
        da.Fill(ds);
        dgv.DataSource = ds.Tables[0]; (i want to have all the tables as an index so that i can put this as the datasource of the datagridview).

提前致谢。

4

2 回答 2

4

我相信你可以告诉 DataAdapter 返回多个结果集,方法是给它多个 SELECT 查询,用分号分隔,如下所示:

da = new OleDbDataAdapter("SELECT * FROM Table1; SELECT * FROM Table2", con); 

此外,您可以使用多个 DataAdapter 填充 DataSet,如下所示:

daTable1 = new OleDbDataAdapter("SELECT * FROM Table1", con);
daTable2 = new OleDbDataAdapter("SELECT * FROM Table2", con);
daTable1.Fill(ds, "Table1");
daTable2.Fill(ds, "Table2");

然后,您应该能够通过索引器访问 DataSet 中的表。特别是 ds.Tables[int index]ds.Tables[String name],如下所示:

dgv.DataSource = ds.Tables[0];或者dgv.DataSource = ds.Tables["Table1"];

有关详细信息,请参阅MSDN - 从 DataAdapter (ADO.NET) 填充数据集(特别是多个结果集从多个数据适配器填充数据集)。

于 2012-06-21T15:13:07.887 回答
0

或者您可以使用这种简单的方法。通过这种方式,您可以添加任意数量的表格。

string str = @"SELECT INV_ID,INV_CLIENTNAME,INV_ADD1,INV_CITY,INV_TEL,INV_CIF,INV_DATE,INV_DISCOUNT,
                           ITEM_DES,ITEM_QTY,ITEM_PRICE,INV_TAX_PERCENT,ITEM_QTY*ITEM_PRICE as gtotal
                          FROM (tbl_client INNER JOIN tbl_item ON tbl_client.INV_ID = tbl_item.FK_INV_ID)
                          WHERE (tbl_client.INV_ID = 'abc123')";

 OleDbDataAdapter adp = new OleDbDataAdapter(str, cn.db_cn);
 DataSet dset = new DataSet();
 adp.Fill(dset,"DataTable1");

str = @"SELECT company_name, company_address, company_city, company_tel, company_cif, Id FROM tbl_info";

adp = new OleDbDataAdapter(str, cn.db_cn);

adp.Fill(dset, "tbl_info");
于 2014-04-30T17:20:58.233 回答