HyperLink


Bejelentkezés
E-mail: 
Jelszó: 






Skip Navigation Links
 

Adatmódosító műveletek


ADO.NET 3. rész

Példaprogram letöltése

17451 bájt

A sorozat ezt megelőző számában már eljutottunk az adatbázissal történő kapcsolat felvételhez, illetve már egy egyszerű lekérdezést is megfogalmaztunk, megismerve az OleDbConnection osztály jellemzőit. Sorozatunknak ezek számában bemutatjuk, hogy milyen módon végezhetünk el adatmódosító műveleteket az adatbázis tábláin, illetve ismertetjük ennek kapcsán az adapter osztályok jelentőségét, jellemzőit.

A mellékelt példában a korábban megismert Products nevű, Microsoft Access állományban található adattáblához kapcsolódunk, mely most csak néhány rekordot tartalmaz. A tábla adatain műveleteket fogunk végezni: lekérdezést, rekordtörlést, valamint adatmódosítást és adatbeszúrást.
A következőkben bemutatjuk, milyen jelentősebb property-jeit állíthatjuk be a DataAdapter osztálynak, valamint megismerhetjük metódusait. A DataAdapter osztály az OleDbDataAdapter osztály őse. A következőkben megadott property-k és metódusok a gyermekosztályban újabbakkal egészülnek ki.
ContinueUpdateOnError
Osztály: DataAdapter
Public Property ContinueUpdateOnError As Boolean
Megadhatjuk, hogy folytatódjon-e a művelet az adatsorok frissítésekor, ha valamely rekord módosítása hibát okoz. TRUE esetében nem generálódik kivétel.
AcceptChangesDuringFill
Osztály: DataAdapter
Public Property AcceptChangesDuringFill As Boolean
Megadható, hogy hívódjon-e meg az AcceptChanges metódus minden egyes rekordbeszúrás után, amikor a Fill metódust meghívjuk. Az AcceptChanges metódussal jelezhetjük, hogy a legutoljára beszúrt rekord már ne új rekordként szerepeljen a kollekcióban. Ennek fontosságáról a sorozat későbbi számaiban szólunk.
MissingMappingAction
Osztály: DataAdapter
Public Overridable Property MissingMappingAction As _ MissingMappingAction Implements _ IDataAdapter.MissingMappingAction
Megadható, hogy mi történjen akkor, ha a beszúrandó rekord szerkezete nem azonos a fogadó adattábla, vagy rekordkollekció szerkezetével. Háromféle értéket adhatunk meg:
  • Error: az InvalidOperationException kivétel generálódik.
  • Ignore: figyelmen kívül marad az adat, és nem kerül be az adathalmazba
  • Passthrough: létrejön a megfelelő oszlop, vagy a megfelelő szerkezetű tábla, és a DataSet-hez adódik.
TableMappings
Osztály: DataAdapter
Public ReadOnly Property TableMappings As _ DataTableMappingCollection
A property segítségével megadható a kapcsolat a forrás adattábla és a DataTable objektum között.
Ezeken a property-ken kívül a gyermekosztályban megtalálhatók még a következők:
  • DeleteCommand
  • InsertCommand
  • SelectCommand
  • UpdateCommand
A property-k mindegyike OleDbCommand típusú, melyek segítségével elvégezhetjük a különböző adatmanipulációs műveleteket az adatforráson.
Az OleDbDataAdapter osztályban a leggyakrabban használt metódus a következő:
Fill
Osztály: DataAdapter
Public MustOverride Function Fill( _ ByVal dataSet As DataSet _ ) As Integer Implements IDataAdapter.Fill
Az osztály SelectCommand property-jén keresztül elérhető objektum által elvégzett lekérdezés eredményadatai bekerülnek a paraméterben megadott memóriabeli tárolóba.
Paraméterek
ByVal dataSet As DataSet
A memóriabeli adathalmaz, melybe a lekérdezés műveletének eredménye kerül.
Visszatérési érték
Az adathalmazba sikeresen beszúrt rekordok száma.
CommandText
Osztály: OleDbCommand
Public Overridable Property CommandText As String Implements _ IDbCommand.CommandText
Ebben a property-ben fogalmazhatjuk meg az SQL utasítást, amennyiben az utasítás szöveges.
CommandTimeout
Osztály: OleDbCommand
Public Overridable Property CommandTimeout As Integer Implements _ IDbCommand.CommandTimeout
A megadott SQL utasítás végrehajtásának türelmi ideje, ha az nem hajtódik végre azonnal. Az alapértelmezett érték 30 másodperc.
CommandType
Osztály: OleDbCommand
Public Overridable Property CommandType As CommandType Implements _ IDbCommand.CommandType
A végrehajtandó utasítás típusa. Értékei lehetnek: Text (szöveg), StoredProcedure (tárolt eljárás).
Connection
Osztály: OleDbCommand
Public Property Connection As OleDbConnection
Az adatbázis-kapcsolat felépítését lehetővé tevő objektum adható itt meg.
Parameters
Osztály: OleDbCommand
Public ReadOnly Property Parameters As OleDbParameterCollection
Amennyiben az utasítás típusát tárolt eljárásra választjuk, akkor itt adhatjuk meg a paramétereket.
Transaction
Osztály: OleDbCommand
Public Property Transaction As OleDbTransaction
A kapcsolaton belüli tranzakciós objektumot hozhatjuk létre.
Az egyes parancstípusok esetében a leggyakrabban használható metódusok a következők:
Cancel
Osztály: OleDbCommand
Public Overridable Sub Cancel() Implements IDbCommand.Cancel
Törölhető a parancsvégrehajtás.
ExecuteNonQuery
Osztály: OleDbCommand
Public Overridable Function ExecuteNonQuery() As Integer Implements _ IDbCommand.ExecuteNonQuery
Végrehajtható a nem lekérdezés természetű utasítás.
Visszatérési érték
A sorok száma, melyeket a végrehajtás érint.
ExecuteReader
Osztály: OleDbCommand
Overloads Public Function ExecuteReader() As OleDbDataReader
A lekérdezés természetű utasítások hajthatók végre a metódussal, melynek eredményére közvetlenül vagyunk kíváncsiak.
Visszatérési érték
Eredménye egy OleDbDataReader objektum, melyben az adatok megtalálhatóak.
ExecuteScalar
Osztály: OleDbCommand
Public Overridable Function ExecuteScalar() As Object Implements _ IDbCommand.ExecuteScalar
Olyan lekérdezések végezhetők el, melyek egy eredményt adnak vissza.
Visszatérési érték
A lekérdezett érték objektuma.
Látható tehát, hogy a .NET ezen egy objektum esetében is szerteágazóan, és jelentősen segíti az adatbázissal kapcsolatos műveletek elvégzését. Az OleDbDataAdapter osztályról összességében elmondható, hogy mintegy hidat képez a fizikai adathalmaz, és a memóriabeli adattároló adatstruktúrák, és így kvázi a megjelenítés között.
A mellékelt példában egyszerű műveleteket végzünk el, melyek a lényegre koncentrálnak, vagyis arra, hogy a felhasználói felületen végzett műveletek eredménye látható legyen a fizikai adatforrásban is.
Adatmódosítás
Az alkalmazás TabControl-jának első füle alatt módosíthatjuk a ComboBox listában kiválasztott azonosítóval rendelkező rekordokat.
A rekord két másik mezőt tartalmaz, melyeket módosíthatunk úgy, hogy új értékeket adunk meg a szövegmezőkben. Amennyiben nem adunk meg semmit, az adott érték nem módosul. A módosításkor az UpdateCommand objektumot kell használnunk, melynek CommandText property-jét kell megfelelően megadnunk. Az UPDATE SQL utasítás megadása után az ExecuteNonQuery metódust kell meghívnunk.
oleDbConnection1.Open()
oleDbDataAdapter1.UpdateCommand.ExecuteNonQuery()
oleDbConnection1.Close() 
A művelet után frissítjük a harmadik fül alatti táblázatot, mely a tábla adatait tartalmazza.
dt.Rows.Clear()
oleDbDataAdapter1.Fill(dt)
dataGrid1.DataSource = dt.DefaultView
Adatok törlése
Az adott rekord törlésekor a DeleteCommand objektumot kell használnunk.
oleDbDataAdapter1.DeleteCommand.CommandText = "DELETE FROM PRODUCTS WHERE ProductID = " + comboBox1.Text
A törlés után természetesen frissítjük a ComboBox tartalmát is.
...
UpdateCombo()
Adatbeszúrás
A Form TabControl-jának második füle alatt új rekordot szúrhatunk be a táblázatba. Ennek módja, hogy az InsertCommand objektum CommandText property-jében megadjuk az INSERT utasítást, majd meghívjuk az ExecuteNonQuery metódust.
oleDbDataAdapter1.InsertCommand.CommandText = "INSERT INTO PRODUCTS VALUES (" + textBox5.Text + ",'" + textBox4.Text + "'," + textBox3.Text + ")"
...
oleDbConnection1.Open()
oleDbDataAdapter1.InsertCommand.ExecuteNonQuery()
oleDbConnection1.Close()
Majd a frissítés következik, hogy a megjelenített adatok is fedjék a valóságot.
dt.Rows.Clear()
oleDbDataAdapter1.Fill(dt)
dataGrid1.DataSource = dt.DefaultView

Cikksorozat

#IDKategóriaCikk címeSorozat
3520DelphiSQL nézettáblák használata1. rész
3559DelphiSQL nézettáblák létrehozása, törlése2. rész
3586DelphiRekordműveletek nézettáblákon keresztül3. rész
3617DelphiNéhány hasznos lehetőség4. rész


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-2010 Animare Software Kft. Minden jog fenntartva!
| Készült: Animare Stúdió | Adatvédelem | Kapcsolat |