lehrerbibliothek.deDatenschutzerklärung
ADO- Programmierung Universeller Datenzugriff mit ActiveX Data Objects
ADO- Programmierung
Universeller Datenzugriff mit ActiveX Data Objects




David Sceppa

Microsoft Press
EAN: 9783860636183 (ISBN: 3-86063-618-9)
340 Seiten, paperback, 17 x 24cm, 2000

EUR 39,90
alle Angaben ohne Gewähr

Umschlagtext
- Referenz und Anleitung zur Verwendung von ADO

- Erfahrungsbasierte und praktische Beispiele aus dem Microsoft Developer-Support



Programmieren Sie schnelle und leistungsfähige Datenbankanwendungen mit den Active Data Objects und der Hilfe dieses Buchs! Mit ADO hat Microsoft eine universelle Datenzugriffstechnologie eingeführt, die die Möglichkeiten älterer Technologien wie Data Access Objects (DAO) und Remote Data Objects (RDO) erweitert und darüber hinaus den Zugriff auf nicht relationale Datenquellen ermöglicht. Kurz gesagt, alle Eventualitäten im Bereich des Datenzugriffs können mit ADO implementiert werden! Um all diese Eigenschaften ausnützen zu können und mögliche Fehlerquellen bei der Programmierung mit ADO von Anfang an zu vermeiden, ist dieses Buch geschrieben worden. Ausgehend von einer gründlichen Erklärung des Objektmodells von ADO beschreibt der Autor die wirklich relevanten Techniken bei der Programmierung mit den ActiveX Data Objects. Dabei helfen Ihm seine Erfahrung als Microsoft Developer Support Professional im Bereich ADO und Visual Basic, um Praxisnähe und Beantwortung der wirklich brennenden Fragen zu ADO zu gewährleisten.



Lernen Sie:

- Das ADO-Objektmodell

- Connection, Command und Recordset-Objekte beherrschen

- Die neuen Record- und Stream-Objekte in ADO 2.5

- Datenzugriff für klassische Anwendungen und für Intranet-Sites

- Techniken für Datenbank-Aktualisierungen

- Ermittlung und Bearbeitung von Aktualisierungs-Konflikten

- Welchen Cursortyp für welches DBMS und welchen Anwendungstyp verwenden?

- Mit den RAD-Bibliotheken der ADO Cursor Engine datenbankunabhängigen Code erstellen

- Handling von Transaktionen in Mehrbenutzer-Anwendungen

- Übergeben von Datensatzgruppen an andere Prozesse

- Remote Data Service (RDS) für den Datenbankzugriffe im Internet

- Erweiterte Funktionlität mit ADOX

- Jet-Datenbank-Replikation mit JRO



Auf Begleit-CD:

- Grundlegender Beispiel-Code für den Einsatz von ADO

- Microsoft Data Access Components (MDAC) 2.5

- MDAC 2.5 SDK (Software Development Kit)

- Das englische Original dieses Titels als elektronisches Buch



David Sceppa ist Developer Support Professional bei Microsoft und damit im täglichen Kontakt zu Entwicklern, die Fragen zu ADO und Visual Basic haben. Er hat außerdem als technischer Fachlektor die ADO-relevanten Teile anderer Microsoft Press-Bücher betreut.
Inhaltsverzeichnis
Vorwort XV

Danksagung XVII

Verwenden der beiliegenden CD-ROM XIX


Teil A
Objekte, Cursor und Aktualisierungstechniken 1

1 Einführung 3

Wo sind wir, und wie sind wir hier angelangt? 3
Data Access Objects 4
Remote Data Objects 7 4
Das beste aus zwei Welten: ActiveX Data Objects 5
Schwierigkeiten bei der Verwendung von ADO 5
Was kann dieses Buch für mich tun? 6
Warnung und Entschuldigung 7
Wo ist der Code? 8

2 Eine kurze Übersicht über das ADO-Objektmodell 11
Das ADO-Objektmodell 12
Das Connection-Objekt 12
Das Command-Objekt 13
Das Recordset-Objekt 13
Dynamische Eigenschaften 14
Aus der Ordnung entsteht das Chaos 14
Abrufen einer Datensatzgruppe ohne das Command-Objekt 14
Connection-Objekt: benutzen oder nicht benutzen? 15
Abrufen einer Datensatzgruppe ohne Datenbank 16
Trennen einer Datensatzgruppe von einer Verbindung 17
Übergeben einer Datensatzgruppe in andere Prozesse 18
Persistenz kann sich auszahlen 21
Erstellen Ihrer eigenen Datensatzgruppe 22
Neue Objekte in ADO 2.5 22
Das Record-Objekt 22
Das Stream-Objekt 22
Fragen, die häufiger gestellt werden sollten 23

3 Das ADO-Objekt Connection 25
Eigenschaften und Auflistungen des ADO-Objekts Connection 25
Die Attributes-Eigenschaft 26
Die CommandTimeout-Eigenschaft 27
Die ConnectionString-Eigenschaft 27
Die ConnectionTimeout-Eigenschaft 27
Die CursorLocation-Eigenschaft 27
Die DefaultDatabase-Eigenschaft 27
Die Errors-Auflistung 28
Die IsolationLevel-Eigenschaft 28
Die Mode-Eigenschaft 29
Die Properties-Auflistung 30
Die Provider-Eigenschaft 30
Die State-Eigenschaft 30
Die Version-Eigenschaft 31
Funktionen und Methoden des ADO-Objekts Connection 31
Die BeginTrans-Methode 31
Die Cancel-Methode 32
Die Close-Methode 32
Die CommitTrans-Methode 32
Die Execute-Methode 32
Die Open-Methode 34
Die OpenSchema-Methode 35
Die RollbackTrans-Methode 36
Die Ereignisse des ADO-Objekts Connection 36
Das BeginTransComplete-Ereignis 36
Das CommitTransComplete-Ereignis 37
Das ConnectComplete-Ereignis 37
Das Disconnect-Ereignis 37
Das ExecuteComplete-Ereignis 38
Das InfoMessage-Ereignis 38
Das RollbackTransComplete-Ereignis 39
Das WillConnect-Ereignis 39
Das WillExecute-Ereignis 39
Die Anatomie einer Verbindungszeichenfolge 40
Erstellen von Verbindungszeichenfolgen mit Datenlink 40
Datenlink-Dateien verwenden 41
Der OLE DB Provider für ODBC-Treiber 42
Der OLE DB-Provider für Access-Datenbanken 42
Der OLE DB-Provider für SQL Server-Datenbanken 43
Der OLE DB-Provider für Oracle-Datenbanken 43
Verwalten Ihrer Transaktionen 43
Die Methoden BeginTrans, CommitTrans und Rollback 44
Die Attributes-Eigenschaft 45
Die IsolationLevel-Eigenschaft 45
Komponentendienste und der Distributed Transaction Coordinator 47
Fragen, die häufiger gestellt werden sollten 47

4 Die ADO-Objekte Recordset und Field 49
Eigenschaften und Auflistungen des ADO-Objekts Recordset 49
Die Eigenschaften Absolute Page, PageCount und PageSize 51
Die AbsolutePosition-Eigenschaft 51
Die ActiveCommand-Eigenschaft 52
Die ActiveConnection-Eigenschaft 52
Die Eigenschaften BOF und EOF 52
Die Bookmark-Eigenschaft 53
Die CacheSize-Eigenschaft 54
Die CursorLocation-Eigenschaft 54
Die CursorType-Eigenschaft 55
Die Eigenschaften DataMember und DataSource 56
Die EditMode-Eigenschaft 56
Die Fields-Auflistung 56
Die Filter-Eigenschaft 57
Die Index-Eigenschaft 60
Die LockType-Eigenschaft 61
Die MarshalOptions-Eigenschaft 62
Die MaxRecords-Eigenschaft 63
Die Properties-Auflistung 64
Die RecordCount-Eigenschaft 64
Die Sort-Eigenschaft f 64
Die Source-Eigenschaft 65
Die State-Eigenschaft 65
Die Status-Eigenschaft 66
Die StaylnSync-Eigenschaft 67
Funktionen und Methoden des ADO-Objekts Recordset 67
Die AddNew-Methode 68
Die Cancel-Methode 69
Die CancelBatch-Methode 69
Die sonderbare Geschichte von AffectEnum 70
Die CancelUpdate-Methode 71
Die Clone-Methode 72
Die Close-Methode 72
Die CompareBookmarks-Methode 73
Die Delete-Methode 74
Die Find-Methode 74
Die GetRows-Methode 76
Die GetString-Methode 77
Die Move-Methode 78
Die Methoden MoveFirst, MoveLast, MoveNext und MovePrevious 79
Die NextRecordset-Methode 79
Die Open-Methode 81
Die Requery-Methode 83
Die Resync-Methode 84
Die Save-Methode 85
Die Seek-Methode 86
Die Supports-Methode 87
Die Update-Methode 87
Die UpdateBatch-Methode 88
Ereignisse des ADO-Objekts Recordset 88
Das EndOfRecordset-Ereignis 89
Das FetchComplete-Ereignis 90
Das FetchProgress-Ereignis 90
Die Ereignisse WillChangeField und FieldChangeComplete 91
Die Ereignisse WillChangeRecord und RecordChangeComplete 92
Die Ereignisse WillChangeRecordset und RecordsetChangeComplete 93
Die Ereignisse WillMove und MoveComplete 94
Die ADO-Auflistung Fields 95
Die Append-Methode 96
Die CancelUpdate-Methode 97
Die Delete-Methode 97
Die Refresh-Methode 97
Die Resync-Methode 97
Die Update-Methode 97
Die Eigenschaften des ADO-Objekts Field 98
Die ActualSize-Eigenschaft 98
Die Attributes-Eigenschaft 98
Die DataFormat-Eigenschaft 99
Die DefinedSize-Eigenschaft 100
Die Name-Eigenschaft 100
Verwenden der Name-Eigenschaft mit Verknüpfungsabfragen 100
Die NumericScale-Eigenschaft 101
Die OriginalValue-Eigenschaft 101
Die Precision-Eigenschaft 102
Die Properties-Auflistung 102
Die Type-Eigenschaft 102
Die UnderlyingValue-Eigenschaft 102
Die Value-Eigenschaft 102
Methoden des ADO-Objekts Field 103
Die AppendChunk-Methode 104
Die GetChunk-Methode 104
Fragen, die häufiger gestellt werden sollten 105

5 Die ADO-Objekte Command und Parameter 107
Eigenschaften und Auflistungen des ADO-Objekts Command 107
Die ActiveConnection-Eigenschaft 108
Die CommandText-Eigenschaft 108
Die CommandTimeout-Eigenschaft 108
Die CommandType-Eigenschaft 109
Die Name-Eigenschaft 111
Die Parameters-Auflistung 112
Die Prepared-Eigenschaft 112
Die Properties-Auflistung 113
Die State-Eigenschaft 113
Methoden des ADO-Objekts Command 113
Die Cancel-Methode 113
Die CreateParameter-Methode 114
Die Execute-Methode 114
Die ADO-Auflistung Parameters 115
Die Append-Methode 115
Die Refresh-Methode 116
Eigenschaften und Auflistungen des ADO-Objekts Parameter 116
Die Attributes-Eigenschaft 117
Die Direction-Eigenschaft 117
Die Name-Eigenschaft 118
Die Eigenschaften NumericScale und Precision 118
Die Properties-Auflistung 118
Die Size-Eigenschaft 118
Die Type-Eigenschaft 119
Die Value-Eigenschaft 119
Methoden des ADO-Objekts Parameter 119
Die AppendChunk-Methode 119
Fragen, die häufiger gestellt werden sollten 119

6 Die ADO-Objekte Record und Stream 123
Welche OLE DB-Provider unterstützen das ADO-Objekt Record? 123
Der OLE DB-Provider für die Internetveröffentlichung 124
Der OLE DB-Provider für Microsoft Exchange Server 124
Zukünftige OLE DB-Provider 124
Das ADO-Objekt Record 124
Hierarchische Daten 125
Nicht rechteckige Daten 125
Eigenschaften und Auflistungen des ADO-Objekts Record 126
Die ActiveConnection-Eigenschaft 126
Die Fields-Auflistung 126
Die Mode-Eigenschaft 126
Die ParentURL-Eigenschaft 127
Die Properties-Auflistung 127
Die RecordType-Eigenschaft 127
Die Source-Eigenschaft 128
Die State-Eigenschaft 128
Funktionen und Methoden des ADO-Objekts Record 129
Die Cancel-Methode 129
Die Close-Methode 129
Die CopyRecord-Methode 129
Die DeleteRecord-Methode 130
Die GetChildren-Methode 131
Die MoveRecord-Methode 131
Die Open-Methode 132
Das ADO-Objekt Stream 133
Arbeiten mit Dokumentdaten 133
Arbeiten mit persistenten Daten 133
Arbeiten mit BLOB-Daten 134
Eigenschaften des ADO-Objekts Stream 134
Die Charset-Eigenschaft 134
Die EOS-Eigenschaft 135
Die LineSeparator-Eigenschaft 135
Die Mode-Eigenschaft 136
Die Position-Eigenschaft 136
Die Size-Eigenschaft 136
Die State-Eigenschaft 136
Die Type-Eigenschaft 136
Funktionen und Methoden des ADO-Objekts Stream-Objekt 137
Die Cancel-Methode 137
Die Close-Methode 137
Die CopyTo-Methode 137
Die Flush-Methode 138
Die LoadFromFile-Methode 138
Die Open-Methode 138
Die Read-Methode 139
Die ReadText-Methode 139
Die SaveToFile-Methode 140
Die SetEOS-Methode 140
Die SkipLine-Methode 140
Die Write-Methode 140
Die WriteText-Methode 141
Fragen, die häufiger gestellt werden sollten 141

7 Cursor 143
Was ist ein Cursor? 143
Cursor-Typ-Definitionen 144
Vorwärts-Cursor 144
Firehose-Cursor 145
Arbeiten mit mehreren Verbindungen 146
Statische Cursor 147
Schlüsselgruppen-Cursor 148
Dynamische Cursor 149
Gemischter Cursor 150
Client-seitige Cursor 150
Überlegungen zu datenbankspezifischen Cursorn 151
Server-seitige Cursor und SQL Server 152
Server-seitige Cursor und Access 153
Server-seitige Cursor und Oracle 154
Sie können nicht immer das bekommen, was Sie möchten 154
RecordCount und Lesezeichen 155
Wieso gibt die RecordCount-Eigenschaft den Wert -1 zurück? 155
Was ist mit »Die Zeilengruppe kann nicht mit Lesezeichen versehen
werden« gemeint? 156
Fragen, die häufiger gestellt werden sollten 157

8 Aktualisieren Ihrer Datenbank 159
Do-It-Yourself 159
Aktionsabfragen 160
Aktionsabfragen und die ADO-Cursor-Engine 161
Gespeicherte Prozeduren 162
Arbeiten Sie mit Ihrem DBA zusammen 162
Verwenden aktualisierbarer Datensatzgruppen 167
Aktualisierbare server-seitige Datensatzgruppen 167
Aktualisierbare client-seitige Datensatzgruppen 169
Fragen, die häufiger gestellt werden sollten 170

TeilB
Arbeiten mit der ADO-Cursor-Engine 171

9 Übersicht über die ADO-Cursor-Engine 173

Die Datensatzgruppe als Datencontainer 174
Gebundene Steuerelemente 174
Filtern und Suchen 175
Sortieren 176
Einfache Aktualisierungen und Stapelaktualisierungen 176
Update Resync 177
Nicht verbundene Datensatzgruppen 177
Lösen optimistischer Aktualisierungskonflikte 178
Speichern Ihrer Daten 178
Hierarchische Datensatzgruppen 179
Übergabe von Datensatzgruppen über Prozessgrenzen hinweg 180
Remote Data Service 180
Vorteile der ADO-Cursor-Engine 180
Zeitersparnis 180
Vereinfachen Ihres Codes 181
Schreiben von datenbankunabhängigem Code 181
Nachteile der ADO-Cursor-Engine 182
Einschränkung der Performance 182
Begrenzte Flexibilität 182
Schreibgeschützte Felder 183
Fragen, die häufiger gestellt werden sollten 183

10 Datenbankaktualisierung mit der ADO-Cursor-Engine 185
Wie ADO Metadaten ermittelt 186
Basistabelle und Feldnamen 187
Lokalisieren des zu modifizierenden Datensatzes 187
Wo sind diese Metadaten gespeichert? 189
Parallelitätskontrolle 189
Höflichkeit ist wichtig 190
Ermitteln des Aktualisierungserfolges 191
Verwenden des Primärschlüssels 191
Kontrollieren der Kriterien in der WHERE-Klausel 192
Was geschieht nach meinem Aktualisierungsversuch? 193
Verknüpfungen 194
Einfügevorgänge 194
Löschvorgänge 195
Die dynamische Eigenschaft Resync Command 195
Ändern des von einer Bestellung referenzierten Kundens 196
Generieren einer neuen Bestellung und Anzeigen der korrekten Kundendaten 197
Zusammengesetzte Schlüssel 198
Fragen, die häufiger gestellt werden sollten 199

11 Update Resync 201
Wenn eine einfache Aktionsabfrage nicht genug ist 202
Auto-Inkrement-Identitätsfeld 202
Timestamp-basierte Aktualisierungen 202
Vorgabewerte 203
Update Resync kommt zu Hilfe! 203
adResyncNone 204
adResyncAutoIncrement 204
adResyncInserts 206
adResyncUpdates 207
adResyncConflicts 209
adResyncDeletes 210
adResyncAll 210
Fragen, die häufiger gestellt werden sollten 210

12 Ermitteln und Bearbeiten von Konflikten 211
Was nun? 212
Fehlerbehandlung 213
Allgemeine Fehlerbehandlung 213
Werden Sie zu Ihrem eigenen schlimmsten Benutzer 213
Abfragen von ADO-Informationen 214
Die Fehlerinformationen von ADO 214
Die Filter-Eigenschaft 215
Die Status-Eigenschaft 215
Die Value und OriginalValue 216
Die Resync-Methode und die Update Resync-Eigenschaft 216
Die UnderlyingValue-Eigenschaft 216
Aufspüren von »Lücken« in Ihrer Datensatzgruppe 217
Identifizieren möglicher Konflikte 218
Einfache Konflikte 218
Übergreifende Konflikte 218
Modifizieren eines gelöschten Datensatzes 219
Löschen eines modifizierten Datensatzes 219
Löschen eines gelöschten Datensatzes 220
Fehlgeschlagene Aktualisierungen, die nicht als Konflikte betrachtet werden 220
Wenn Sie anfangs keinen Erfolg haben, probieren und wieder probieren 221
Aktualisieren Sie Ihre Daten nach einer Resynchronisierung 221
Keine Fehlerbehandlung ist besser als eine schlechte Fehlerbehandlung 222
Fragen, die häufiger gestellt werden sollten 223

13 Speichern Ihrer Datensatzgruppe 225
Eine kurze Geschichte der Persistenz in ADO 225
Was Sie über die Persistenz wissen sollten 227
Welche Daten werden gespeichert? 227
Welches Format sollten Sie verwenden: ADTG oder XML? 229
Fragen, die häufiger gestellt werden sollten 229

14 Hierarchische Datensatzgruppen 231
Verwenden des Datenstrukturierungs-Providers 232
Wie der Datenstrukturierungs-Provider arbeitet 233
Analysieren einer hierarchischen Abfragezeichenfolge 233
Datentabellensteuerelemente und hierarchische Datensatzgruppen 234
Wie MSDataShape Daten speichert und Hierarchien pflegt 235
Standardhierarchien 235
Parameterisierte Hierarchien 236
Standardhierarchien im Vergleich mit parameterisierten Hierarchien 237
Welchen Hierarchietyp sollten Sie benutzen? 238
Funktionalität und Syntax 239
Der Datenumgebungs-Designer 239
Umstrukturierung 239
Hierarchiebeispiele 240
Fragen, die häufiger gestellt werden sollten 243

15 Übergeben von Datensatzgruppen in andere Prozesse 245
Wie COM die Interprozesskommunikation vereinfacht 246
Übergabe von Parametern 246
Wie COM Parameter übergibt 246
COM-Objekte und Prozessgrenzen 247
Wie ADO weiterhin die Interprozesskommunikation vereinfacht 247
Übergabe von Datensatzgruppen innerhalb eines Prozesses 247
Übergabe von Datensatzgruppen über Prozessgrenzen hinweg 248
Wie ADO das Marshaling für client-seitige Datensatzgruppen durchführt 250
Per Marshaling übermittelte Daten einer client-seitigen Datensatzgruppe 251
Metadaten für die Aktualisierung 251
Filter 251
Hierarchien 252
Die MarshalOptions-Eigenschaft 252
Fragen, die häufiger gestellt werden sollten 252

16 Remote Data Service 255
Was ist RDS? 255
Das RDS-Objekt DataControl 256
Die Eigenschaften des RDS-Objekts DataControl-Objekt 257
Die Methoden des RDS-Objekts DataControl-Objekt 261
Die Ereignisse des RDS-Objekts DataControl-Objekt 264
Das RDS-Objekt DataSpace 265
Die InternetTimeout-Eigenschaft 265
Die CreateObject-Methode 265
Das RDSServer-Objekt DataFactory 266
Die ConvertToString-Methode 266
Die CreateRecordset-Methode 267
Die Query-Methode 267
Die SubmitChanges-Methode 267
RDS-Handler 267
Der Microsoft OLE DB-Provider für die Fernverarbeitung 269
Fragen, die häufiger gestellt werden sollten 270

Teil C

Anhänge 273

A ADOX und JRO 275

ADOX 275
Welch großartige Idee! 276
Nun die schlechten Neuigkeiten 277
Das ADOX-Objektmodell 277
Das ADOX-Sicherheitsbeispiel 283
JRO 285
Das JetEngine-Objekt 285
Jet-Replikation 288
Fragen, die häufiger gestellt werden sollten 292

B Beispiel-Code auf der beiliegenden CD-ROM 295
What's My Constant 296
Cursors 296
Detecting Conflicts 299
Huge Hierarchy 300
Identity In Hierarchy 304
No Chunks 307
My Web Site 308
Make Northwind 308
Replication 309

Stichwortverzeichnis 311

Autor 319