2

私は ADO.Net [C#] を学んでおり、DataGridView.DataSource = DataSet.tables[] コマンドでさまざまな DataGridViews を埋めたいと思っています。しかし、私は 1 つのテーブルから 1 つのデータ アダプターにデータを入力する方法しか知りません。データベース全体にクエリを実行し、すべてのテーブルを単一のデータセットに配置して、dataset.tables[テーブル インデックス] オプションを使用して 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

次のように、セミコロンで区切られた複数の SELECT クエリを指定することで、DataAdapter に複数の結果セットを返すように指示できると思います。

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) から DataSet を作成する (特に 複数の結果セット複数の DataAdapter から DataSet を作成する) を参照してください。

于 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 に答える