
Mellékelt példa futtatása előtt a Form1.cs 114. sorában az SQL kapcsolat létrehozásánál adja meg saját bejelentkező nevét és jelszavát, valamint a gép nevét, melyen az SQL szerver fut.
A megvalósítandó feladat a Northwind példaadatbázis Orders és Order Details táblájának összekapcsolása lesz az OrderID mezőn keresztül.
Így készítünk egy lekérdezést az Order táblára.
private void button1_Click(object sender, System.EventArgs e)
{
...
SqlDataAdapter da1 = new SqlDataAdapter("select * from Orders", connection);
da1.Fill(ds, "Orders");
DataColumn dc1 = ds.Tables["Orders"].Columns["OrderID"];
Majd egy másikat az Order Details táblára.
SqlDataAdapter da2 = new SqlDataAdapter("select * from \"Order Details\"", connection);
da2.Fill(ds, "OrderDetails");
DataColumn dc2 = ds.Tables["OrderDetails"].Columns["OrderID"];
Mindkét lekérdezésnél létrehoztunk egy-egy DataColumn osztályt, mely az adott tábla OrderID oszlopát tartalmazza. Ezeket felhasználva létrehozhatunk egy DataRelation osztályt, melynek konstruktorában megadjuk a reláció elnevezését, valamint azt a két oszlopot, mely alapján az összekapcsolást el szeretnénk végezni. Ha ez megtörtént, akkor a DataSet osztály Relations property-jében található Add függvényt használva elvégezzük a reláció létrehozását.
DataRelation dr = new DataRelation("OrdersRelations", dc1, dc2);
ds.Relations.Add(dr);
Most már könnyedén megjeleníthetjük az adatainkat mondjuk egy ListBox-ban úgy, hogy minden szülő tábla sorához tartozó gyermek sorokat közvetlenül a szülő alá írjuk. Ehhez egy foreach ciklust kezdeményezünk, mely végigmegy a szülő tábla összes során.
listBox1.BeginUpdate();
foreach (DataRow r1 in ds.Tables["Orders"].Rows)
{
A szülő tábla sorát hozzáadjuk a ListBox elemeihez, majd egy újabb foreach ciklussal végigmegyünk azokon a sorokon a gyermek táblában, melyek e szülőhöz tartoznak. Ehhez a DataRow osztály GetChildRows függvényét kell használnunk, melynek paraméterként egy DataRelation osztály példányát kell megadnunk, melyben definiálva van az a kapcsolat, amelyik alapján a leválogatást szeretnénk elvégezni. A GetChildRows függvény visszatérési értéke egy tömb lesz, melynek minden eleme DataRow típusú, így ezen könnyen végigmehetünk a második foreach ciklussal és megjeleníthetjük a gyermek tábla adatait.
listBox1.Items.Add("[" + r1["OrderID"] + "] " + r1["CustomerID"] + " (" + r1["OrderDate"] + ")");
foreach (DataRow r2 in r1.GetChildRows(dr))
{
listBox1.Items.Add("\t[" + r2["OrderID"] + "] " + r2["UnitPrice"]);
}
...