Die Community zu .NET und Classic VB.
Menü

Der große ADO-Kurs - Seite 2

 von 

Verbindung (Connection)
Nächste Seite >>
Übersicht
<< Vorherige Seite

Vorwort  

Um ADO nutzen zu können muß im Menü unter Projekt-Verweise ein Verweis auf die „Microsoft ActiveX Data Objects 2.x Library“ gesetzt werden. Im weiteren Verlauf wird stellenweise ADO 2.5 vorausgesetzt.

Ein ADO-Datenmodell besteht im allgemeinen aus drei Hauptkomponenten:

Der Verbindung (Connection) welche die Kommunikation zur Datenbank erst ermöglicht. Sie enthält alle Grundlegenden Informationen über die Datenbank und dient als Basis für alle weiteren Aktionen.

Zweitens dem Datensatz (Recordset), dieses Objekt gibt Daten in Form von Tabellen oder Auswahlabfragen (Views) zurück. Es dient sowohl zur Anzeige von Daten als auch zur Bearbeitung und Auswertung.

Das dritte Objekt ist das Befehls-Objekt (Command), hiermit kann man Aktionsabfragen (StoredProcedures) und SQL-Statements ausführen.

Wer vielleicht den Vorgänger dieses Tutorials kennt hat zwar bereits einen kleinen Grundstock zu ADO kennen gelernt, hier wird jedoch nun versucht auf den Umgang mit der ADO-Datenverarbeitung möglichst genau einzugehen und fast alle wichtigen und auch spezielleren Punkte genauer zu erläutern.

Hierzu erst einmal ein paar Vorinformationen welche sowohl wichtige Voraussetzungen als auch Punkte für die Weitergabe von ADO Datenbankprojekten beachtet werden müssen. Auf diese Punkte möchte ich zu Anfangs hier eingehen.

1.1 MDAC_TYP

Die MDAC_TYP („Microsoft Data Access Components“) sind die ADO-Treiber. Sie müssen auf einem Client vorhanden sein, damit dieser eine Anwendung die auf ADO basiert ausführen kann. Sie sollte eigentlich durch den Weitergabeassistenten mitgeliefert werden. Jedoch ist nicht sicher gestellt, daß auch die aktuelle Version mitgeliefert wird. Diese wird von Microsoft kostenlos zum Download angeboten unter http://www.microsoft.com/data/. Bei Datenbanksystemen welche nicht von Microsoft stammen (z.B. Informix) werden die Treiber meist von jeweiligen Hersteller angeboten. Der Treiber für Oracle, welcher dem Oracle-Treiber von Microsoft klar vorzuziehen ist, ist in der MDAC von Microsoft enthalten.

Bei Windows ME und Windows 2000 ist die MDAC_TYP 2.1 ein Teil der Windowsinstallation, bei Windows XP ist ADO 2.7 Standard.

Beim Einsatz von Jet-Datenbanken (Access, dBase, FoxPro) und ODBC ist zu beachten, daß ADO 2.6 und (derzeit aktuellste) 2.7 diese Treiber nicht mehr beinhaltet. Hier müssen die Treiber entweder von einer Vorversion der MDAC_TYP bereits installiert sein (wird z.B. von MS-Office 2000 und MS-Office XP oder Windows 2000 und Windows XP mitgeliefert) oder extra installiert werden.

Die ODBC- und FoxPro-Treiber sind erhältlich unter:
http://msdn.microsoft.com/vfoxpro/downloads/odbc.asp

Die Jet-Treiber sind erhältlich unter:
http://support.microsoft.com/default.aspx?scid=kb;en-us;Q239114

1.2 DCOM_98

Bei Clients mit dem Betriebssystem Windows 95/98 muß, laut Microsoft, zusätzlich noch DCOM98 vorinstallliert werden. Nach meiner Sicht hat das zwar eher mit DirectX zu tun, aber man weiß ja nie… . DCOM98 ist auf der VisualBasic-/VisualStudio-CD im Verzeichnis Dcom98 zu finden (Dateiname „Dcom98.exe“).

1.3 Sicherheits-MDW

Im weiteren Verlauf werden bei Access oft Sicherheits-MDWs verwendet. Hierbei handelt es sich um MDB-ähnliche Dateien welche über den Arbeitsgruppenadministrator erstellt werden können. Sie ermöglichen in Verbindung mit Access eine recht gute Userverwaltung zu erstellen. Man sollte dringend vermeiden eigene Usertabellen anzulegen und dort Passwörter abzulegen, wer schon mal eine Access-MDB mit einem Editor geöffnet hat weiß warum! Auch eine Verschlüsslung der Datenbank durch Access halte ich für keine gute Lösung. Außerdem, wenn es diese Möglichkeit gibt sollte man sie doch nutzen. Zum Erstellen setzen Sie sich am besten ein bißchen mit der Access-Hilfe auseinander.

1.4 Beispielumgebung

Zum leichteren Verständnis der nachfolgenden Beispiele hier eine kurze Beschreibung der für dieses Tutorial verwendeten Komponenten:

ACCESS 2000

Datenbankpfad F:_DBs.mdb
Datenbankpasswort "test"
System-MDW-Pfad " F:_DBs.mdb "
User-ID "florianr"
User-Passwort "flo"
Verwendeter Treiber "Microsoft.Jet.OLEDB.4.0"

SQL-Server

Servername "FLO_MAIN"
Datenbankname "db_test"
USER-ID "florianr" (oder NT-Authentifikation)
Passwort "flo" (oder NT-Authentifikation)

ADODB

Version 2.5 (2.6 ist zwar bereits verfügbar wird jedoch von Microsoft noch nicht vollständig unterstützt.
Standard-Connection-Name Cn oder CnT
Standard-Recordset-Name Rs oder RsT
Standard-Command-Name Cmd

1.5 SQL-Server und MSDE

Diesen Abschnitt sollten sich auf jeden sorgfältig Fall Access-Programmierer durchlesen!

Was ist der SQL-Server? Der SQL-Server ist das leistungsfähigste Pferd im Microsoftstall wenn es um Datenbanken geht.

Kleine Erklärung für reine Access-Programmierer: Der SQL-Server ist nicht mit einer Access-Datenbank vergleichbar. Auf einem Server werden mehrere Datenbanken verwaltet. Der Server kann entweder über einen zugeteilten NT (2000) Usernamen erreicht werden oder auf eine eigene, interne, Sicherheit zurückgreifen. Der SQL-Server ist wesentlich leistungsfähiger als Access und sicherer. Es ist möglich über StoredProcedures und Trigger zu erstellen, hierbei handelt es sich um leistungsstarke und z.T. große SQL-Skripts welche die Aktionsabfragen von Access weit in den Schatten stellen. Die drei wichtigsten Komponenten des SQL-Servers sind der Enterprise-Manager, der Service-Manager und der Query-Analyser, diese Komponenten werden weiter unten noch genauer beschrieben.

Es gibt viele verschiedene Versionen des SQL-Servers hier nur ein paar davon.

1.5.1 Enterprise Edition

Unterstützt bis zu 32 CPUs unterstützt (sowie Clustering), einen Arbeitsspeicher von bis 2 GByte und eine unbegrenzte Größe der Datenbanken. Als Plattform wird NT oder Windows 2000 Enterprise Server vorausgesetzt. Er ist nur für riesige Datenbanksysteme im Bereich von mehreren GByte oder TByte sinnvoll.

1.5.2 Standard Edition

Unterstützt bis zu 4 CPUs, 2 GBytes RAM. Unlimitierte Datenbankgrößen. Plattform muß ein NT- oder 2000- Server sein.

1.5.3 Developer Edition

Ähnlich der Standard-Edition. Es dürfen jedoch nur Tests darauf ausgeführt werden. Die Anzahl der möglichen Clients ist auf 10 begrenzt. Kostenloser Bestandteil von VisualStudio- und VisualBasic-Enterpriseedition.

1.5.4 MSDE

Was ist die MSDE (Microsoft Data Engine)? Die MSDE ist eine geniale Neuerung von Microsoft, hierbei handelt es sich um eine abgespeckte Variante der SQL-Server. Die kann bis zu 2 GByte RAM verwalten und erlaubt eine Datenbankgröße von bis zu 2 GByte, sie kann auf normalen Windows-Clients (wie 9x, NT, 2000, …) installiert werden. Die MSDE bietet im eigentlichen Lieferumfang keine Entwicklungsumgebungen wie den Enterprise-Manager und den Query-Analyser, sondern nur den Service-Manager.

Laut Microsoft kann die MSDE immer nur 5 User gleichzeitig bedienen. Dies bedeutet jedoch nicht, daß nur 5 User gleichzeitig eingeloggt sein können sondern, daß nur 5 Aktionen (z.B. StoredProcedures) gleichzeitig ausgeführt werden können. Test mit 25 Aktionen gleichzeitig ergaben keinerlei Zeitunterschied zum SQL-Server.

Wichtig ist auch, daß die MSDE nicht gleichzeitig mit dem SQL-Server installiert sein darf! Beide Systeme verwenden die gleichen Verzeichnisse und Registry-Einträge. Leider wird jedoch bei der Installation keine Fehlermeldung ausgegeben sondern einfach alte Daten überschrieben. Natürlich werden aber nur die Programmdateien, nicht aber die Datenbanken überschrieben.

1.5.5 SQL-Server vs. MSDE

Nach dem bisherigen Text könnte man sagen, die MSDE ist ja einfach nur schwächer und unkomfortabler als der SQL-Server. Der einzige Vorteil könnte sein, daß Sie keinen NT-/2000-Server als Plattform benötigen.

Die MSDE hat jedoch ganz gravierende Vorteile! Alle anderen Versionen (bis auf die Developer-Edition) kosten viel Geld. Die MSDE ist kostenlos (!) und kann auch lizenzfrei mit Datenbankprogrammen beliebig vertrieben werden.

Die MSDE ist auf verschiedenen Wegen erhältlich, sie ist beispielsweise im Lieferumfang von Microsoft Office 2000 Premium oder Developer enthalten (Office-CD 1, Pfad CD-ROM\SQL\X86\Setup\SetupSQL.exe). Sie kann von lizenzierten Besitzern von VisualBasic (Pro/Enterprise) oder VisualStudio (Pro/Enterprise) bei Microsoft bestellt werden, im Lieferumfang ist dann auch der Enterprisemanager Developer-Edition und der Query-Analyser welche beide für die Entwicklung von zu vertreibender Software durchaus genutzt werden können, nur nicht im Live-Betrieb verwendet werden dürfen. Außerdem sind beide Komponenten im Lieferumfang des VisualStudios Enterprise-Edition enthalten (aber Version 6.5 und nicht 7, also 2000) unter CD-ROM\SQL\I386\SETUP.EXE . Wichtig ist jedoch, daß hierbei nicht die Developer-Edition des SQL-Servers sondern nur der Enterprise-Manager und der Query-Analyser installiert werden! Außerdem kann die MSDE auch durchaus gut mit Access 2000 verwaltet werden. Access 2000 bietet eine direkte Schnittstelle zum SQL-Server und eine sehr schöne Entwicklungsumgebung (unverständlicherweise auch eine wesentlich größere als für Accesseigene Datenbanken!).

Außerdem sollte eine maximale Datenbankgröße (nicht gesamter Server!) von 2 GByte doch eine Zeit durchaus reichen.

Der Gedanke von Microsoft war, daß bislang Access die einzige kostenlose Datenbankplattform war welche kostenfrei veräußert werden konnte. Durch die eher geringe Leistungsfähigkeit und Fremdheit zu richtigen DB-Systemen war kein Grund sich später für ein anderes Microsoftprodukt (SQL-Server zu entscheiden). Durch die MSDE bietet Microsoft nun eine sehr leistungsfähige Grundlage. Wenn man auf der MSDE angefangen hat und nun die MSDE doch irgendwann nicht mehr ausreichen sollte ist jedoch der Schritt auf den SQL-Server sehr klein, da die MSDE 1:1 mit dem SQL-Server kompatibel ist.

1.5.6 Service-Manager

Das ist eigentlich nur ein sehr kleines Tool welches nichts mit der Entwicklung von Datenbanken zu tun hat. Hierbei handelt es sich um eine kleine Konsole welche die Dienste für die MSDE (den SQL-Server) starten, anhalten und beenden kann.

Wenn die Dienste jedoch nicht laufen kann die Datenbank nicht angesprochen werden.

1.5.7 Enterprise-Manager

Der Enterprise-Manager ist eigentlich das Herz des SQL-Servers. Hiermit lassen sich neue User/Logins/Datenbanken/… anlegen und verwalten. Der Enterprise-Manager gibt eine Übersicht über alle Server/Datenbanken und deren Objekte wie StoredProcedures/Views/… . Er bietet einen kleinen SQL-Editor (leider nur für Views).

1.5.8 Query-Analyser

Dieses Tool hat zwar keinen SQL-Assistenten wie Access und der Enterprise-Manager, er ist jedoch ein sehr wichtiges Tool für den Umgang mit dem SQL-Server. Er bietet die Möglichkeit Datenbankabfragen zu testen, StoredProcedures, Views und andere SQL-Server spezifischen Objekte anzulegen. Außerdem bietet der Query-Analyser die Möglichkeit die SQL-Statements zu debuggen und Analysen über Performance und vieles anderes auszugeben.

1.5.9 Properties

Bevor wir auf die eigentlichen Objekte und deren Funktionalität von ADO eingehen wäre die Properties-Collection, welche sich bei fast allen ADO-Objekten wiederfindet zu erwähnen. Der Gedanke diese zur Verfügung zu stellen war eine sehr gute Idee von Microsoft! Hierbei handelt es sich um eine Möglichkeit der verschiedenen Datenbankprovider eigene Eigenschaften zur Verfügung zu stellen. Eine einzelne Property besitzt vier Eigenschaften.

Die Eigenschaft Attributes spielt jedoch eine sehr untergeordnete Rolle und ist noch lange nicht für alle Provider gleichermaßen verfügbar. Falls sie bei einem Objekt von Wichtigkeit ist wird sie weiter unten explizit erwähnt.

Die Eigenschaft Name stellt einen String dar welcher den Namen der Property angibt, da es sich bei den Properties um eine Collection handelt kann der Name auch als Indikator genutzt werden.

Die Properties können über eine sehr kleine Routine erfragt werden:

Private Sub Command1_Click()
Dim i As Integer
Dim Cn As ADODB.Connection
  Set Cn = New ADODB.Connection
  Cn.Provider = "SQLOLEDB.1"
  For i = 0 To Cn.Properties.Count - 1
    Debug.Print Cn.Properties(i).Name,
    Debug.Print Cn.Properties(i).Value
  Next i
End Sub

Listing 1

Nächste Seite >>
Verbindung (Connection)
<< Vorherige Seite
Übersicht