Első lépésben az elérhető adatbázis neveket listázzuk ki. Ehhez a master adatbázisban található sp_databases tárolt eljárást kell lefuttatni, mely egy olyan táblát ad eredményül, amelyben megtalálható az összes adatbázis neve, alapvető adatai. Az eredményt dataGrid1-ben jelenítjük meg.
private void button1_Click(object sender, System.EventArgs e)
{
...
SqlDataAdapter da = new SqlDataAdapter("sp_databases", connection);
da.SelectCommand.CommandType = CommandType.StoredProcedure;
connection.Open();
da.Fill(ds);
dataGrid1.DataSource = ds.Tables[0].DefaultView;
connection.Close();
}
Amikor a felhasználó a dataGrid1-en kattint, akkor keressük elő az aktuálisan kijelölt adatbázisban lévő táblák adatait. Ehhez szintén a master adatbázis egyik tárolt eljárását használjuk fel, névszerint a sp_tables-t. Ez a tárolt eljárás egy olyan táblát ad eredményül, mely tartalmazza a választott adatbázisban lévő táblák adatait.
private void dataGrid1_CurrentCellChanged(object sender, System.EventArgs e)
{
...
SqlDataAdapter da = new SqlDataAdapter("sp_tables", connection);
da.SelectCommand.CommandType = CommandType.StoredProcedure;
Hogy melyik adatbázis tábláiról szeretnénk információt kapni, azt a tárolt eljárás table_qualifier paraméterében adhatjuk meg. A dataGrid1 aktuális sorának első oszlopából vesszük ezt az értéket, ahol az adatbázis nevek kerültek felsorolásra.
da.SelectCommand.Parameters.Add("@table_qualifier", SqlDbType.NVarChar, 128);
da.SelectCommand.Parameters["@table_qualifier"].Value = dataGrid1[dataGrid1.CurrentRowIndex, 0].ToString();
connection.Open();
da.Fill(ds);
A tárolt eljárás által visszaadott táblát a dataGrid2-ben jelenítjük meg.
dataGrid2.DataSource = ds.Tables[0].DefaultView;
connection.Close();
}