C# - Adattábla elérése programozás nélkül

forráskód letöltése
Ha szükségünk van egy lekérdezés eredményének megjelenítésére mondjuk egy táblázatban, akkor ezt megtehetjük úgy, hogy a ToolBox – Data paletta komponenseit használjuk. Ekkor egy ilyen egyszerű feladat elvégzéséhez nem is kell semmit programoznunk, csupán a megfelelő komponenseket felhasználni néhány kattintással és property érték beállítással.
Mellékelt példában az SqlDataAdapter komponens használatát vesszük szemügyre alaposabban.
A mellékelt példa megnyitása után javítsa a Form1.cs 50. sorában lévő sztringet. A helyes működés érdekében meg kell adni a Data Source-nél a szervernevet, melyen az MS SQL fut, a felhasználó nevét és jelszavát.
      sqlConnection1.ConnectionString = "data source=servername;user id=sa;password=uff;initial catalog=Northwind;persist security info=False;workstation id=AS1;packet size=4096";
Nézzük miként jött létre ez a példa.
A menet a következő: az új projekt nyitása után Toolbox – Data, majd dobjunk egy SqlDataAdapter komponenst a Form-ra. Ekkor elindul egy varázsló. A Next gomb után máris foglalkozhatunk az érdemi dolgokkal, így például, hogy miként kapcsolódunk az adatforrásunkhoz. Ha már hoztunk létre régebben kapcsolatot, akkor ezt most felhasználhatjuk, ha még nem, akkor marad a New Connection gomb. Itt megadhatjuk az adatbázis szervert, bejelentkezési nevünket, jelszavunkat (mely nem kerül tárolásra!), és az adatbázist, melyet szeretnénk elérni. Mellékelt példában az MS SQL szerver Northwind példa adatbázisát szeretnénk elérni. Ezek után e kapcsolatnak például a következő neve lesz: SERVERNAME.Northwind.dbo. A későbbiekben ez alapján kapcsolódhatunk ismét ehhez az adatbázishoz az iménti adatok ismételt megadása nélkül.
A következő lapon három lehetőség tárul elénk:
  • SQL lekérdezést állítunk össze
  • Létrehozunk egy új tárolt eljárást
  • Használunk egy már meglévő tárolt eljárást
Mellékelt példában az SQL lekérdezésnél maradtunk. Egy ismételt Next gomb után megadhatjuk a lekérdezésünk szövegét, vagy a Query Builder-rel szerkeszthetünk is egyet.
SELECT * FROM Products
Ezután jöhet a Finish gomb. Az sqlDataAdapter1 SelectCommand property-jén belül megtaláljuk a lekérdezésünket. A felépített adatbázis kapcsolathoz pedig kapunk egy sqlConnection komponenst.
Kattintsunk most az sqlDataAdapter1 komponensen jobb gombbal és válasszuk a Generate Dataset menüpontot. A megjelenő ablakban hagyjunk mindent alapértelmezett értékén és Ok gomb. Némi gondolkodás után kapunk egy újabb komponenst, dataSet11 névvel.
Most a Toolbox – WinForms palettájáról tegyünk egy DataGrid-et a Form-ra, majd a DataSource property-jénél válasszuk a dataSet11 objektumot, valamint a DataMember property-nél a Products táblát.
Ezzel tulajdonképpen készen is lennénk: a tábla szerkezete megjelenik a DataGrid-ben.
Ha például a lekérdezés eredményét is látni akarjuk, akkor már szükség lesz némi programozásra: meg kell hívnunk az sqlDataAdapter1 Fill függvényét.
sqlDataAdapter1.Fill(dataSet11);
Ennek paraméterként átadjuk azt a DataSet-et, melyben tárolva vannak adataink a megjelenítéshez. A Fill függvény több verzióval is rendelkezik. Ha például a DataSet több táblát is tartalmaz, akkor az első DataSet paraméter után megadhatjuk egy sztringben, hogy melyik táblára vagyunk kíváncsiak.
sqlDataAdapter1.Fill(dataSet11, ”Products”);
De akár azt is szabályozhatjuk, hogy az adott táblából hányadik rekordtól kezdve hány rekord látszódjon. Ha fenti lekérdezésnél maradunk és az 10. rekordtól kezdve 5 rekordot szeretnénk látni, akkor a következő lesz a függvény hívása:
sqlDataAdapter1.Fill(dataSet11, 10, 5, ”Products”);
Ha a DataGrid-en keresztül módosítjuk az adatokat, akkor ennek csak a helyben tárolt adathalmazon lesz hatása mindaddig, amíg az Update függvényt meg nem hívjuk, ekkor a megtörtént változások bekerülnek az adatbázisunkba.
    private void button1_Click(object sender, System.EventArgs e)
    {
      sqlDataAdapter1.Update(dataSet11);
    }
Ha már adott az így létrehozott adatkapcsolatunk, akkor ezt nem csak DataGrid-hez köthetjük, hanem bármely olyan kontrolhoz is, amely rendelkezik DataBindings property-vel. Így például egy Label-hez, vagy egy TextBox-hoz könnyen hozzákapcsolhatjuk az adattábla egyik mezőjét. A DataBindings property-n belül a Text property-n keresztül kiválaszthatjuk a DataSet-ünkben lévő tábla megfelelő mezőjét.
Ha nem a Text property-hez szeretnénk az adatokat kapcsolni, akkor használjuk az Advanced property-t.