HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Kötegelt SQL lekérdezések futtatása és megjelenítése


Példaprogram letöltése

10612 bájt

SQL lekérdezések futtatásánál lehetőségünk van arra is, hogy ne csak egyesével tehessük ezt meg, hanem egymás után tetszőleges számú lekérdezést, vagy egyéb SQL utasítást futtassunk. Ekkor a visszakapott eredmény halmazokat egymás után ki is olvashatjuk és megjeleníthetjük, felhasználhatjuk tetszés szerint.
Kihasználva ezt a lehetőséget a mellékelt példában olyan lekérdezést valósítunk meg, mely három különböző SQL select-et futtat egymás után, majd meg is jeleníti ezek eredményét.

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.

Könyv
Ez a cikk megtalálható ebben a könyvben: C# Software Offline 2002 évkönyv 181. oldal

Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!

Copyright © 1999-2012 Animare Software Kft. Minden jog fenntartva!
| Készült: Animare Stúdió | Adatvédelem | Kapcsolat |