A lekérdezéseket az MS SQL Northwind példaadatbázisában futtatjuk, melyek az alábbiak lesznek:
select productname from products
select companyname from customers
select firstname+' '+lastname from employees
A lekérdezés eredményeit úgy jelenítjük meg, hogy nyitunk egy új példányt a Form2-ből, melyen egy ListBox-ba elhelyezzük az eredmény halmaz sorait. Ehhez a Form2-ben szükségünk lesz a függvényre, mely képes a ListBox soraihoz egy újat hozzáadni.
public void Add(string name)
{
listBox1.Items.Add(name);
}
Térjünk vissza most a Form1-hez, nézzük miként is megy a lekérdezés. Létrehozunk először egy kapcsolatot az SQL szerverrel.
private void button1_Click(object sender, System.EventArgs e)
{
SqlConnection connection = new SqlConnection("data source=localhost;initial catalog=northwind;user id="+textBox1.Text+";password="+textBox2.Text+";connect timeout=5");
connection.Open();
Ha a kapcsolat adott, akkor egy SqlCommand osztály segítségével létrehozzuk a kötegelt lekérdezést, melyben három select utasítás kap helyet. Ezeket egy-egy pontosvesszővel kell elválasztanunk egymástól.
SqlCommand c = new SqlCommand("select productname from products; select companyname from customers; select firstname+' '+lastname from employees", connection);
A lekérdezéseket futtathatjuk az ExecuteReader függvénnyel, mely egy SqlDataReader osztály példányát adja vissza. Ennek segítségével kiolvashatjuk egymás után a három lekérdezésünk eredményeinek minden sorát.
SqlDataReader dr = c.ExecuteReader();
int left=0;
Szükségünk lesz egy do - while ciklusra, mely az egyes lekérdezések eredményei között fog lépkedni.
do
{
Form2 f2 = new Form2();
Szükségünk lesz egy while ciklusra, mely az adott lekérdezés eredményének sorain megy végig. Ezeket a sorokat a létrehozott Form2 ListBox-ába tároljuk el, majd pozícionáljuk a Form2 példányát úgy, hogy azok egymás mellé kerüljenek.
while (dr.Read())
{
f2.Add(dr.GetString(0));
}
f2.Left = left;
f2.Top = this.Height;
left+=f2.Width;
f2.Show();
}
Végül léphetünk a következő lekérdezés eredményhalmazára, melyhez az SqlDataReader osztály NextResult függvényét kell meghívnunk.
while (dr.NextResult());
}
E kettős ciklus futásának végére rendelkezésünkre áll mindegyik lekérdezés eredményének mindegyik sora.