HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Navigátor komponens létrehozása adatbázisokhoz


Példaprogram letöltése

19258 bájt

A következő cikkben egy olyan komponenst készítünk, mely lehetővé teszi, hogy a vele összekapcsolt adatforráson műveleteket végezzünk, adatokat szúrjunk be, illetve töröljünk vagy módosítsunk. Windows-os programjainkban egy vizuálisan megjelenítő komponenssel összekapcsolva az adatforrás aktuális állapota nyomon követhető, a funkciók kódolás nélkül elérhetőek.

A példa az MS SQL Server Northwind adatbázisát használja. A program megnyitása előtt a mellékelt Address_Table.sql script lefuttatásával létre kell hozni és fel kell tölteni adatokkal a program által használt adatbázis táblát.
Indítás előtt az SqlConnection komponens ConnectionString property-jének, valamint az SqlDataAdapter komponens SelectCommand objektumának CommandText property-jének értéket kell adni.
A melléklet két project-et tartalmaz, az egyik a komponens project-je, míg a másikban a használatát demonstráló Windows-os alkalmazás található.
Az új kontrol létrehozása a szokásos módon történik, a File – New – Project menüpont lenyomása után megjelenő ablakban válasszuk a Visual C# Project elemei közül a Windows Control Library-t.
A komponens működési elve
Első lépésként property-ket adunk a komponensünkhöz, melyek segítségével kommunikál a külvilággal. A DataSourceName property az egyetlen, mely megjelenik a szerkesztő ablakban és válik szerkeszthetővé tervezési időben is. A másik három property csak futási időben állítható, ezeket a befogadó alkalmazás írja és olvassa. A property-k természetesen változókat állítanak. A property-k:
Property neve Típus Megjegyzés
DataSourceName string Az adatforrás neve, melyhez a komponens kapcsolódik.
AdapterString string A Select Utasítás „CommandText” property-je
ConnectionString string Az adatbázis kapcsolat „ConnectionString” property-je
Position int Az adatforrás aktuális rekordjának száma
A komponens úgy működik, hogy a felhasználó alkalmazásból kapott paraméterekkel létrehozza az adatbázis kapcsolatot, feltölt egy adatforrást, melyet hozzákapcsol egy, az alkalmazásban felhasznált vizuális komponenshez, jelen esetben egy DataGrid komponenshez. A felhasználó által a komponens segítségével elvégzett műveletek a komponens adatforrásán hajtódnak végre, amely módosítások rögtön láthatóak a vizuális komponensben.
A komponens létrehozásakor feltesszük a Button osztályba tartozó vezérlőket egy Form-ra, majd megvalósítjuk a vezérlőkhöz tartozó kezelőfüggvényeket. A kezelőfüggvények kódja állítja a rekordmutatót, valamint végzi el az adatbázis műveleteket.
A komponens helyes működése azon alapszik, hogy pontosan ismerje a rekordmutató pillanatnyi helyzetét, melyet részben a felhasználó módosít; valamint, hogy a rekordmutató állásától függően elérhetővé, illetve elérhetetlenné tegyen bizonyos nyomógombokat, vagyis a hozzájuk kapcsolódó funkciókat. A komponens a gombok kezelőfüggvényein kívül két függvényt tartalmaz:
  • Kiolvassa a Position property értékét
public void ReadPositionProperty()
{
  this.BindingContext[dataSet,dsname].Position=position;
  SetButtons();
}
  • Műveletek után állítja a komponens navigáló gombjainak elérhetőségét, attól függően, hogy a rekordmutató éppen hol áll.
if (this.BindingContext[dataSet,dsname].Position == 0){
  n0.Enabled = n1.Enabled = false;
  n2.Enabled = n3.Enabled = true;
}
else if ((this.BindingContext[dataSet,dsname].Position>0) && (this.BindingContext[dataSet,dsname].Position!=dataSet.Tables[dsname].Rows.Count-1)){
  n0.Enabled = n1.Enabled = true;
  n2.Enabled = n3.Enabled = true;
}
else if (this.BindingContext[dataSet,dsname].Position==dataSet.Tables[dsname].Rows.Count-1){
  n0.Enabled = n1.Enabled = true;
  n2.Enabled = n3.Enabled = false;
}
A komponensen belül meg kell valósítani egy osztályt, mely az egyedi kivételek kezelését teszi lehetővé. A kivételkezelő osztály a karakter literálokkal végzett műveletek esetén előforduló hibák központi kezelésére szolgál.
public class MyException:ApplicationException
{
  public MyException(string msg):base(msg){}
}
A komponens létrejöttekor beállítja a kezdeti értékeit, így a vizuálisan megjelenítő komponensben betöltődéskor az adatforrás aktuális adatai szerepelnek. A komponens jelenleg MS SQL Server alkalmazással képes együttműködni.
A project fordítása után a kontrol kész. Felhasználása előtt a kontrolt fel kell tenni a ToolBox-ra a szokásos módon: kattintsunk a ToolBox valamely lapján az egér jobb gombjával, majd a megjelenő menüből válasszuk ki a Customize ToolBox pontot, a megjelenő ablakban a .NET Frameworks Components fület. A Browse gombbal keressük elő az imént létrehozott .DLL-t. A ToolBox-on ezután megjelenik a kontrol, melyet szabadon felhasználhatunk.
A komponenst felhasználó alkalmazás
A befogadó alkalmazásban néhány dologra kell figyelmet fordítani.
Az alkalmazásnak tartalmaznia kell SqlDataAdapter és SqlConnection komponenseket, melyeket a kívánt adathalmaztól függően paraméterezni kell.
A komponenst tartalmazó dialógusablak betöltődésekor a komponens absztrakt adattárolóját, mely jelen esetben egy DataSet komponens, fel kell tölteni adatokkal, majd a vizuális komponensnek át kell adni adatforrásként:
public Form1()
{
  InitializeComponent();
  adapter.Fill(dbNavigator.dataSet,"Address_Table");
  dataGrid1.DataSource=dbNavigator.dataSet;
}
A komponens Properties ablakban megjelenő property-jét be kell állítani a megfelelő értékre, jelen esetben a „Address_Table” értékre.
Gondoskodni kell arról is, hogy a komponens másik három property-je is értéket kapjon. Ezeket a Form betöltődésekor tehetjük meg.
this.dbNavigator.AdapterString = "SELECT * FROM Address_Table";
...
this.dbNavigator.ConnectionString=connection.ConnectionString;
Az alkalmazásban egy függvényt kell megvalósítani, hogy a vezérlő pontosan ismerje a rekordmutató értékét. Ez nem más, mint a DataGrid komponens egy eseménykezelője.
private void dataGrid1_CurrentCellChanged(object sender,System.EventArgs e)
{
  dbNavigator.Position = dataGrid1.CurrentCell.RowNumber;
  dbNavigator.ReadPositionProperty();
}

Könyv
Ez a cikk megtalálható ebben a könyvben: C# Software Offline 2002 évkönyv 623. 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 |