MDAC - Microsoft Data Access Components 1
ODBC Open DataBase Connectivity ODBC software API adatbáziskezeléshez. Nyelvfüggetlen, Adatbázisfüggetlen Operációsrendszer-független Standard adathozzáférés SQL alapú Akár nem relációs adatbázisokhoz is, táblázatokhoz, XML állományokhoz 1992-től fejlesztik, a sokoldalú. OLE DB, JDBC, ADO.NET - újabbak, platformfüggőek. Alkalmazás Driver Manager Library DBDriver DBDriver Vezérlőpult/Felügyeleti eszközök/ ODBC adatforrások OLEDB OLE DB - Microsoft API adatok elérésére COM alapú ODBC továbbfejlesztés OLE DB absztrakciós szintekkel elkülönítve kezeli az alkalmazást és az adatokat datasource, session, command rowsets. Az OLE DB-ben a program az adatfogyasztó (consumer) és az adatbázis a szolgáltató (provider). A provider a COM interface lehetőségeit használva szolgáltat. 2
ADO ActiveX Data Object (Microsoft) COM objektum adatforrások elérésére Az OLE DB / ODBC és a programnyelv között Adatbázisfüggetlen SQL-t használ ADO több felsőszintű objektumot tartalmaz: Connection Object az adatbázis kapcsolat. Recordset Object adatbázisrekordok halmaza. Command Object SQL parancs. Record Object adathalmaz (rendszerint nem az adatbázisból). Stream Object adatfolyam text file, web-oldal. Error Object hibakezelés. Field Object adatbázismező. Parameter Object SQL paraméter. Property Object az objektumok adatai. ADO több felsőszintű objektumot tartalmaz: VBScript Visual Basic Delphi C++ Builder.NET, ADO.NET 3
ADO ActiveX Data Object (Microsoft) Project Preferences / Microsoft ActiveX 2.0 Library MSADO20.TLB A használat alaplépései 1. Connection objektum létrehozása az adatbázissal való kapcsolathoz Connectionstring tulajdonság / tulajdonságok OpenSchema metódus Open metódus A Recordset objektum létrehozása az adatok tárolására Megjelenítés (Binding) A változások érvényesítése Tranzakciók kezelése A Connection zárása 4
1. Létrehozás Dim cn As New ADODB.Connection 2. Tulajdonságok 1. Connection ADO objektum ConnectionTimeout - várakozás sec.-ben Mode - admodeunknown nem definiált (Default) admoderead admodewrite admodereadwrite admodesharedenyread - más nem olvashat admodesharedenywrite - más nem írhat admodeshareexclusive - más nem nyithat admodesharedenynone - más nem nyithat semmilyen joggal. Cursor Location - adusenone - aduseclient (Microsoft Client Cursor Provider) - aduseserver - Default. Provider - driver név ODBC-hez, vagy OLEDB-hez ConnectionString 5
1. Connection / ConnectionString ConnectionString - kategória1=adat; kategória1=adat; Access - OLEDB "Provider=Microsoft.Jet.OLEDB.4.0 ;User ID=;Data Source=D:\Oktatás\DB\VB\Auto.mdb; " http://www.connectionstrings.com Access ODBC - Standard védelem "Driver={Microsoft Access Driver (*.mdb)};dbq=c:\mydatabase.mdb;uid=admin;pwd=; " Access ODBC - jelszóval "Driver={Microsoft Access Driver (*.mdb)};dbq=c:\mydatabase.mdb;exclusive=1; Uid=admin;Pwd=; SQL ODBC - Standard védelem: "Driver={SQLServer};Server=Your_Server_Name;Database=Your_Database_Name; Uid=Your_Username;Pwd=Your_Password;" SQL ODBC - jelszóval: "Driver={SQLServer};Server=Your_Server_Name;Database=Your_Database_Name; Trusted_Connection=yes;" SQL OLE DB- Standard védelem: "Provider=SQLOLEDB;Data Source=Your_Server_Name; Initial Catalog= Your_Database_Name;UserId=Your_Username;Password=Your_Password;" SQL OLE DB- jelszóval: "Provider=SQLOLEDB;Data Source=Your_Server_Name; 6 Initial Catalog=Your_Database_Name;Integrated Security=SSPI;"
1. Connection / Metódusok connection.open [ConnectionString, UserID, Password, Options] Set recordset = connection.openschema (QueryType [, Criteria]) QueryType adschematables adschemaviews adschemaprimarykeys Criteria - TABLE_CATALOG TABLE_SCHEMA TABLE_NAME TABLE_TYPE - TABLE_CATALOG TABLE_SCHEMA TABLE_NAME - PK_TABLE_CATALOG PK_TABLE_SCHEMA PK_TABLE_NAME 7
1. Connection / Metódusok Dim cn As New ADODB.Connection Dim sch As ADODB.Recordset cn.connectionstring = "Provider=Microsoft.Jet.OLEDB.4.0; _ User ID=; _ Data Source="+App.Path+ " \Auto.mdb;" cn.open Set sch = cn.openschema(adschematables) Do Until sch.eof Séma.AddItem sch!table_name + " (" + sch!table_type + ")" sch.movenext Loop 8
Set recordset = Connection.Execute(parancsstr, [recs, opc]) Csak olvasható hozzáférés, csak előre kurzor parancsstr - SQL utasítás, vagy táblanév, vagy tárolt eljárás. recs - Long változó a rekordok száma vissza Opc -a parancsstr t értelmező Long Konstans Leírás adcmdtext adcmdtable adcmdtabledirect adcmdstoredproc adexecuteasync a parancsstr SQL parancsot tartalmaz az ADO generál SELECT * FROM from parancsstr táblából a provider SELECT * FROM from parancsstr táblából. a provider tárolt eljárása fut aszinkron parancs connection.open [Conn.Str, UserID, Password, OpenOptions] Megnyitja a kapcsolatot Conn.Str UserID Password OpenOptions connection.close Lezárja a kapcsolatot 1. Connection / Metódusok - a connectionstring - adconnectasync eset;n aszinkron kapcsolat 9
Egy adott tábla adott rekordjainak halmaza, amelyek közül egyszerre egyetlen érhető el. recordset.open parancsobj, kapcs, kurzor, zárás, opciók Parancsobj - Command objektum.commandtext - a rekorset-töltő parancs.activeconnection - az akt. kapcsolat Kapcs - ha nincs a Command-ban connection objektum vagy connection string kurzor adopenforward Default. Csak előre mozoghat adopenkeyset Mint a dinamikus, mások hozzáadásai, törlései nem látszanak. adopendynamic Mások hozzáadásai, törlései is látszanak. adopenstaticstatic Statikus adathalmaz zárás adlockreadonly (Default) Read-only adlockpessimistic A változáskor rögtön módosul a DB adlockoptimistic Csak Update esetén módosul a DB. adlockbatchoptimistic Csak Update esetén módosul a DB. opciók adcmdtext a parancsstr SQL parancsot tartalmaz adcmdtable adcmdtabledirect adcmdstoredproc adexecuteasync 2. Recordset objektum az ADO generál SELECT * FROM from parancsstr a provider SELECT * FROM from parancsstr a provider tárolt eljárása fut aszinkron parancs 10
2. Recordset objektum Tulajdonságok / Metódusok.RecordCount - a rekordok száma.absoluteposition - írható olvasható Long a rekordpozíció (1- RecordCount).Bookmark - írható olvasható Variant a pozíció megjegyzésére.cursorlocation - aduseclient kliensoldali aduseserver Default.BOF,.EOF - logikai eleje, vége jelölő.fields() - a mezők gyűjtemény.count - az elemek száma.name -a mező neve.value -a mező értéke.item(index) - az index-edik elem.append Name, Type[, Size, Attrib] -Name string -Type enum - adempty -Size Long - Attrib enum - adflddefault.delete Field.MoveFirst,.MoveNext, Move n - mozgat.delete - rekord törlés.addnew - rekord hozzáadása.mezőnév az adat az aktuális rekordban.update az aktuális rekord kiírása.updatebatch az összes függő kiírása. 11
2. Recordset objektum Dim i As Integer, j As Integer, s As String RC.Visible = False Label1.Caption = "Rekordok száma: : Label2.Caption = "" Mezők.Clear : Értékek.Clear On Error Resume Next rs.close On Error GoTo ki sch.movefirst sch.move Séma.ListIndex Set Qy.ActiveConnection = cn Qy.CommandText = "SELECT * FROM " + sch!table_name rs.cursorlocation = aduseclient rs.open Qy,, adopendynamic, adlockbatchoptimistic Label1.Caption = "Rekordok száma: " + CStr(rs.RecordCount) RC.Max = rs.recordcount - 1 RC_Change For i = 0 To rs.fields.count - 1 Mezők.AddItem rs.fields(i).name Next i rs.movefirst Do Until rs.eof s = "" For j = 0 To rs.fields.count - 1 s = s + CStr(rs.Fields(j).Value) + ";" Next j Értékek.AddItem s rs.movenext Loop RC.Visible = True 12
2. Adatkomponensek Microsoft DataGrid Components / Microsoft DataGrid Control 6.0 (OLEDB) VSFLEX3.OCX.DataSource - a recordset Set DataGrid1.DataSource = rs DataGrid1.Refresh.AllowAddNew DataControl Binding Project Preferences / Microsoft DataBinding Collection MSBind.DLL Text Dim BindColl As New BindingCollection BindColl.DataSource=recordset BindColl.Add Textvezérlő, Text, Mezőnév Set Nepesseg.DataSource = rs Nepesseg.Add Text1, "Text", "Név" 13
2. Adatkomponensek DataList Components / Microsoft DataList Control 6.0 (OLEDB) Set DataList1.RowSource = rs DataList1.BoundColumn = "Név " DataList1.ListField = "Név" ' a forrás recordset ' a forrás kötött mező ' a forrás megjelenő mező. Rem Set DataList1.DataSource = rs ' a cél recordset Rem DataList1.DataField = "DestBoundField cél kötött mező 3. Tranzakciók Connection.BeginTrans Connection.CommitTrans Connection.RollbackTrans 14