35
Datenbankprogrammierung von DAO nach ADO Tilo Böttcher, Technology Specialist Hans Brender, Presales Consultant [email protected] Microsoft GmbH

Datenbankprogrammierung von DAO nach ADO Tilo Böttcher, Technology Specialist Hans Brender, Presales Consultant [email protected] Microsoft GmbH

Embed Size (px)

Citation preview

Page 1: Datenbankprogrammierung von DAO nach ADO Tilo Böttcher, Technology Specialist Hans Brender, Presales Consultant tiloboet@microsoft.com Microsoft GmbH

Datenbankprogrammierung von DAO nach ADO

Tilo Böttcher, Technology SpecialistHans Brender, Presales Consultant

[email protected] GmbH

Page 2: Datenbankprogrammierung von DAO nach ADO Tilo Böttcher, Technology Specialist Hans Brender, Presales Consultant tiloboet@microsoft.com Microsoft GmbH

Von DAO nach ADO

AgendaVon ISAM und RDBMS?DAO vs. ADO, ADOX und JRO Tuning und Objektorientierung

Code-Migration und Fehlerquellen

Page 3: Datenbankprogrammierung von DAO nach ADO Tilo Böttcher, Technology Specialist Hans Brender, Presales Consultant tiloboet@microsoft.com Microsoft GmbH

Von DAO nach ADO warum ein Wechsel nötig ist/sein wird, mehrschichtige Applikationen

OLE DB Provider for SQL ServerOLE DB Provider for SQL Server

ActiveX Data Objects (ADO)ActiveX Data Objects (ADO)

RDS/HTTPRDS/HTTP

VB 3-TierVB 3-Tier VB 2-TierVB 2-TierIE DHTMLIE DHTML HTML 3.2HTML 3.2

IISIIS

Business ObjectsBusiness Objects

ADO/OLEDBADO/OLEDB

ClientClient

RDS/DCOMRDS/DCOM

MiddleMiddleTierTier

DataData SQL Server SQL Server

IIS/ASPIIS/ASP

Page 4: Datenbankprogrammierung von DAO nach ADO Tilo Böttcher, Technology Specialist Hans Brender, Presales Consultant tiloboet@microsoft.com Microsoft GmbH

Von DAO nach ADO warum ein Wechsel nötig ist/sein wird, verteilte und heterogene Daten

Datenbank

Spreadsheet

Photos

Mail

Landkarten

Dokumente

SQL 7.0Query

Processor

OLE DBInterface

DirectoryService

Select top 10 SS.customer_ name, SS.sales, Excel.sales_plan, Oracle.DSO, Mail.call_reports, Access.Entertainment_budgetFrom SS.cust_sales, Excel.budget_worksheet, Oracle.receivables, Mail.my_mail_folder, Access.EntertainmentWhere SS.sales and SS.cust = Excel.cust and SS.cust = Oracle.cust SS.cust = Mail.cust SS.cust = Access.custOrder by SS.sales

Page 5: Datenbankprogrammierung von DAO nach ADO Tilo Böttcher, Technology Specialist Hans Brender, Presales Consultant tiloboet@microsoft.com Microsoft GmbH

Von DAO nach ADO warum ein Wechsel nötig ist/sein wird, Analyse zur Laufzeit online/offline - OLAP

OLAPOLAP ServerServer

OLEDB/ADOOLEDB/ADO

Client TierClient Tier •MD ActiveX ControlsMD ActiveX Controls•MD Erweiterung für MD Erweiterung für OLE DBOLE DB•Office SchnittstellenOffice Schnittstellen•3rd Party Clients3rd Party ClientsOLAP Server TierOLAP Server Tier•MD Daten-MD Daten-ModellierungModellierung•MD Calculation MD Calculation Engine Engine •Multidimensionaler Multidimensionaler CacheCache

OLEDB/ODBCOLEDB/ODBC

Data Warehouse TierData Warehouse Tier•DW ManagementDW Management•Plato MD Cache Plato MD Cache (HOLAP)(HOLAP)•SQL Server (ROLAP)SQL Server (ROLAP)•3rd Party 3rd Party DatenspeicherDatenspeicher

Page 6: Datenbankprogrammierung von DAO nach ADO Tilo Böttcher, Technology Specialist Hans Brender, Presales Consultant tiloboet@microsoft.com Microsoft GmbH

Von DAO nach ADO

AgendaVon ISAM nach RDBMS?DAO vs. ADO, ADOX und JRO Tuning und Objektorientierung

Code-Migration und Fehlerquellen

Page 7: Datenbankprogrammierung von DAO nach ADO Tilo Böttcher, Technology Specialist Hans Brender, Presales Consultant tiloboet@microsoft.com Microsoft GmbH

Von DAO nach ADOVon ISAM nach RDBMS?

ISAM-Dateien (Indexed Sequential Access Method) Jet/Access, Lotus

RDBMS (Relationelles DatenBank Management-System)SQL

Page 8: Datenbankprogrammierung von DAO nach ADO Tilo Böttcher, Technology Specialist Hans Brender, Presales Consultant tiloboet@microsoft.com Microsoft GmbH

Von DAO nach ADOWarum gerade ADO?

Vereinfachtes Objektmodell via OLE DBVerwendung von VARIANTS (VB oder Type-Mapping)Bei Benutzung von Visual C++ #import Methode verwendenNeue ADO Komponenten zur einfachen BenutzungOptimiert für Visual Basic Speichermanagement verbessert durch Aufspaltung in mehrere KomponentenBestimmung der Datenlokalität, Speicherverwendung und Datentypen

Page 9: Datenbankprogrammierung von DAO nach ADO Tilo Böttcher, Technology Specialist Hans Brender, Presales Consultant tiloboet@microsoft.com Microsoft GmbH

Von DAO nach ADOVon ISAM nach RDBMS? Warum gerade ADO?

Applikations-SchnittstelleApplikations-Schnittstelle

ADOADO

OLE DBOLE DB

DAODAO

RDBMSRDBMS

JETJET

ODBC APIODBC API

RDORDO

SQL 7.0SQL 7.0

ODBCODBCDirectDirect ADO ADOX JRO

Page 10: Datenbankprogrammierung von DAO nach ADO Tilo Böttcher, Technology Specialist Hans Brender, Presales Consultant tiloboet@microsoft.com Microsoft GmbH

MSDE SQL Desktop SQL Server SQL Enterprise

Läuft unter OS W9x,NTW,NTS W9x,NTW,NTS NTS NTS, NTS Ent.

max DB Größe 2 GB - - -

Adressierbarer

Speicher 2 GB 2 GB 2 GB 3 GB (siehe 5)

Lizenzfrei

Distribuierbar x - - -

Als SKU

verfügbar - x(siehe 0) x x

Replikation - x(siehe 1) x x

OLAP Services - - x(siehe 2) x

Performance

optimert bis

(User)

Workerthreads

limitiert!

Zugriff auf SQL

Server erlaubt - x(siehe 3) x x

Prozessorlimit 2 2 4 8 (siehe 4)

SQL Server Tool - x x x

SQL DMO

(Distr.

Management

Objects)

SQL Namespace x x x x

SQL

Enterprisemanag

er - x x x

Distributed

Queries - x x x

DTS Services

zum SQL Server - x x x

Fulltext Indexing - - x x

Repository - x x x

Linked Server - x x x

DTC

(Distributed

Transaction

Coordinator)

English Query - - x x

Clustering - - - x

ca. 5 ca. 5 unlimited unlimited

x x x x

- x x x

Aspekt SQL 6.5

SQL 7.0 MSDE

Maximale Größe 1

Terabyte

1,048,516

Terabyte2 Gigabytes

MaximaleVerbindungen

Unlimited

UnlimitedUnlimited(Tuned for

5)

MaximaleAnzahl DBs 32,767 32,767 32,767

Von DAO nach ADOVon ISAM nach RDBMS? SQL Datenbanken im Vergleich

Page 11: Datenbankprogrammierung von DAO nach ADO Tilo Böttcher, Technology Specialist Hans Brender, Presales Consultant tiloboet@microsoft.com Microsoft GmbH

TabellenSichtenDatenbankdiagrammeGespeicherte ProzedurenFormulare/BerichteSeitenMakrosModule

Von DAO nach ADOVon ISAM nach RDBMS? Access 2000 ADP Objekte, ein Kompromiss beim Umstieg?

Page 12: Datenbankprogrammierung von DAO nach ADO Tilo Böttcher, Technology Specialist Hans Brender, Presales Consultant tiloboet@microsoft.com Microsoft GmbH

Von DAO nach ADOVon ISAM nach RDBMS? Access 2000 ADP Objekte, ein Kompromiss beim Umstieg?

MSDE / Desktop unterstützt nicht:

• Parallele Abfragen • Planung im Fibermodus • Read-Ahead-Scans • Hash- und Mergeverknüpfungen • Fail-Over-Cluster • Erweiterungsspeicher

Page 13: Datenbankprogrammierung von DAO nach ADO Tilo Böttcher, Technology Specialist Hans Brender, Presales Consultant tiloboet@microsoft.com Microsoft GmbH

Von DAO nach ADO

AgendaVon ISAM nach RDBMS?DAO vs. ADO, ADOX und JRO Tuning und Objektorientierung

Code-Migration und Fehlerquellen

Page 14: Datenbankprogrammierung von DAO nach ADO Tilo Böttcher, Technology Specialist Hans Brender, Presales Consultant tiloboet@microsoft.com Microsoft GmbH

Von DAO nach ADODAO vs. ADO, ADOX und JROEin kleiner ADO Überblick

Eigenschaften:

Scrolling cursorsFabricated data cachesDisconnected cachingRich data-oriented services

Sort, filter, findMultiple-tier deployment & configurationRemoting of data via HTTP and DCOMBusiness object integrationpersistent RecordSets (auch XML >= 2.1)

Architektur:

ConnectionConnection

CommandCommand

RecordsetRecordset

ErrorsErrors

FieldsFields

ParametersParameters

Page 15: Datenbankprogrammierung von DAO nach ADO Tilo Böttcher, Technology Specialist Hans Brender, Presales Consultant tiloboet@microsoft.com Microsoft GmbH

Von DAO nach ADODAO vs. ADO, ADOX und JROEin kleiner ADO Überblick

Eigenschaften:

ADO ist sprachunabhängig, da als COM inproc Server implementiert (VB, VC++, VJ++, ASP ...)Zugriff auf unterschiedlichste relationale und nicht relationale Daten (SQL-Server, Oracle, DB2, Access, Active Directory, Index Server ...)Abstraktion erfolgt über den unterliegenden OLE DB Provider; ADO Programming Model bleibt gleich (Robust gegen Änderungen)

Page 16: Datenbankprogrammierung von DAO nach ADO Tilo Böttcher, Technology Specialist Hans Brender, Presales Consultant tiloboet@microsoft.com Microsoft GmbH

Von DAO nach ADODAO vs. ADO, ADOX und JROEin kleiner ADO Überblick

ADO 2.0Shipped mit Visual Studio 6.0Shipped mit NT 4.0 Service Pack 4 (2.0 SP1, kein standalone Setup)

ADO 2.1Shipped mit SQL Server 7.0Shipped mit Office 2000Dokumentation nur mit Office 2000Dokumentation Online unter msdn.microsoft.com\library

ADO 2.5Shipped mit Windows 2000Shipped als MDAC 2.5 (derzeit nur US)

www.microsoft.com\data für Updates und News zu UDA

Page 17: Datenbankprogrammierung von DAO nach ADO Tilo Böttcher, Technology Specialist Hans Brender, Presales Consultant tiloboet@microsoft.com Microsoft GmbH

Von DAO nach ADODAO vs. ADO, ADOX und JRO, die wichtigsten ADO Eigenschaften (2.1)

ADO

Data Source LinksPersistence in XMLClient Cursor resync und auto-resyncDynamic PropertiesIndex “on the fly”

ADOX

Für Schema Erzeugung und Manipulation (DDL) und SecurityDDL als First Class Objekte (Schema Manipulation auch via Execute möglich)Auf Microsoft Access resp. JET fokusiertZugang zu DAO Objekten über ADO Programming Model

JRO

Nur ACCESS resp. JET/DAOReplica erzeugen und synchronisierenReplica PriorityCompactDatabase mit Passwort Proctection und EncryptionJET Cache Refresh Sync. zwischen MDB und SQL Server Publication möglich

Page 18: Datenbankprogrammierung von DAO nach ADO Tilo Böttcher, Technology Specialist Hans Brender, Presales Consultant tiloboet@microsoft.com Microsoft GmbH

BereicheÖffnen der DatenbankDatenmanipulationAnlegen und Bearbeiten der DatenbankschemaSicherheitReplikationFehler(teufel) abfangen

Von DAO nach ADODAO vs. ADO, ADOX und JRO

Page 19: Datenbankprogrammierung von DAO nach ADO Tilo Böttcher, Technology Specialist Hans Brender, Presales Consultant tiloboet@microsoft.com Microsoft GmbH

DAOSub OpenJetDatabase() Dim db As DAO.Database Set db = DBEngine.OpenDatabase("C:\Nwind.mdb") db.Close End Sub

Von DAO nach ADODAO vs. ADO, ADOX und JRO; Öffnen der Datenbank

ADOSub OpenJetDatabase() Dim cnn As New ADODB.Connection cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Nwind.mdb;" cnn.Close End Sub

Sub OpenSecuredDatabase() Dim wks As DAO.Workspace Dim db As DAO.Database DBEngine.SystemDB = "nwindsysdb.mdw" Set wks = DBEngine.CreateWorkspace("", "Admin", "password") Set db = wks.OpenDatabase("c:\nwind.mdb") End Sub

Sub OpenSecuredDatabase() Dim cnn As New ADODB.Connection cnn.Provider = "Microsoft.Jet.OLEDB.4.0" cnn.Properties("Jet OLEDB:System database") = "nwindsysdb.mdw" cnn.Open "Data Source=c:\nwind.mdb;User Id=Admin;Password=password;" End Sub

Sub DAOOpenISAMDatabase() Dim db As DAO.Database Set db = DBEngine.OpenDatabase("C:\Sales.xls", _False, False, "Excel 5.0;") db.Close End Sub

Sub OpenISAMDatabase() Dim cnn As New ADODB.Connection cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data _

Source=C:\Sales.xls;Extended Properties=Excel 5.0;" cnn.Close End Sub

Page 20: Datenbankprogrammierung von DAO nach ADO Tilo Böttcher, Technology Specialist Hans Brender, Presales Consultant tiloboet@microsoft.com Microsoft GmbH

DAOSub OpenRecordset() Dim db As DAO.Database Dim rst As DAO.Recordset Dim fld As DAO.Field 'Open the database Set db = DBEngine.OpenDatabase("C:\nwind.mdb") 'Open the Recordset Set rst = db.OpenRecordset("Select * from Customers where Region" & _

' = WA'", dbOpenSnapshot, dbOpenForwardOnly) ' Display the records in the debug window While Not rst.EOF For Each fld In rst.Fields Debug.Print fld.Value & ";"; Next Debug.Print rst.MoveNext Wend

'Close the recordset rst.CloseEnd Sub

Von DAO nach ADODAO vs. ADO, ADOX und JRO; Datenmanipulation

ADOSub OpenRecordset() Dim cnn As New ADODB.Connection Dim rst As New ADODB.Recordset Dim fld As ADODB.Field ' Open the connection cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\nwind.mdb;" ' Open the forward-only, read-only recordset rst.Open "Select * from Customers where Region = 'WA'", cnn, _

adOpenForwardOnly, adLockReadOnly ' Display the records in the debug window While Not rst.EOF For Each fld In rst.Fields Debug.Print fld.Value & ";"; Next Debug.Print rst.MoveNext Wend 'Close the recordset rst.Close End Sub

Page 21: Datenbankprogrammierung von DAO nach ADO Tilo Böttcher, Technology Specialist Hans Brender, Presales Consultant tiloboet@microsoft.com Microsoft GmbH

DAOSub CreateDatabase() Dim db As New DAO.Database

Set db = DBEngine.CreateDatabase "C:\new.mdb;", dbLangGeneral, End Sub

Von DAO nach ADODAO vs. ADO, ADOX und JRO; Anlegen und Bearbeiten von Datenbankschemata

ADOXSub CreateDatabase() Dim cat As New ADOX.Catalog cat.Create "Provider=Microsoft.Jet.OLEDB.4.0;" & _

"Data Source=C:\new.mdb;"End Sub

Sub DAOListTables() Dim db As DAO.Database Dim tbl As DAO.TableDef ' Open the database Set db = DBEngine.OpenDatabase("C:\nwind.mdb") ' Loop through the tables in the database and print their name For Each tbl In db.TableDefs Debug.Print tbl.Name Next End Sub

Dim cat As New ADOX.Catalog Dim tbl As ADOX.Table ' Open the catalog cat.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;" & _

"Data Source=c:\nwind.mdb;" ' Loop through the tables in the database and print their name For Each tbl In cat.Tables If tbl.Type <> "VIEW" Then Debug.Print tbl.Name Next End Sub

Page 22: Datenbankprogrammierung von DAO nach ADO Tilo Böttcher, Technology Specialist Hans Brender, Presales Consultant tiloboet@microsoft.com Microsoft GmbH

DAOSub DAOCreateTable() Dim db As DAO.Database Dim tbl As DAO.TableDef 'Open the database Set db = DBEngine.OpenDatabase("C:\nwind.mdb") ' Create a new TableDef object. Set tbl = db.CreateTableDef("Contacts") With tbl ' Create fields and append them to the new TableDef object. ' This must be done before appending the TableDef object to ' the TableDefs collection of the database. .Fields.Append .CreateField("FirstName", dbText) .Fields.Append .CreateField("LastName", dbText) .Fields.Append .CreateField("Phone", dbText) .Fields.Append .CreateField("Notes", dbMemo) End With ' Add the new table to the database. db.TableDefs.Append tbl db.CloseEnd Sub

Von DAO nach ADODAO vs. ADO, ADOX und JRO; Anlegen und Bearbeiten von Datenbankschemata

ADOX Dim cat As New ADOX.Catalog Dim tbl As New ADOX.Table ' Open the catalog cat.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;" & _

"Data Source=C:\nwind.mdb;" ' Create a new TableDef object. With tbl .Name = "Contacts" ' Create fields and append them to the new TableDef ' object. This must be done before appending the ' TableDef object to the TableDefs collection of the ' database. .Columns.Append "FirstName", adVarWChar .Columns.Append "LastName", adVarWChar .Columns.Append "Phone", adVarWChar .Columns.Append "Notes", adLongVarWChar End With ' Add the new table to the database. cat.Tables.Append tbl Set cat = NothingEnd Sub

Page 23: Datenbankprogrammierung von DAO nach ADO Tilo Böttcher, Technology Specialist Hans Brender, Presales Consultant tiloboet@microsoft.com Microsoft GmbH

DAOSub SetDatabasePassword() Dim db As DAO.Database Set db = DBEngine.OpenDatabase("C:\nwind.mdb", True) db.NewPassword "", "password" db.Close End Sub

Von DAO nach ADODAO vs. ADO, ADOX und JRO; Sicherheit

ADOXSub SetDatabasePassword() Dim cat As New ADOX.Catalog cat.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;" & _

"Data Source=nwind.mdb;Mode=" & adModeShareExclusive cat.Modify "Jet OLEDB:Database Password=password;"End Sub

Sub CreateUser() Dim wks As DAO.Workspace ' Open a workspace DBEngine.SystemDB = "c:\nwindsysdb.mdw" Set wks = DBEngine.CreateWorkspace("", "Admin", "password") ' Create the user and append it to the Users collection wks.Users.Append wks.CreateUser("User1", "User001", "password") End Sub

Sub CreateUser() Dim cat As New ADOX.Catalog ' Open the catalog, specifying the system database to use cat.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;" & _

"Data Source=C:\nwind.mdb;" & _

"Jet OLEDB:System database=C:\nwindsysdb.mdw;" & _

"User Id=Admin;Password=password;" ' Create the new user and append it to the users collection cat.Users.Append "NewUser", "password", "User001" End Sub

Page 24: Datenbankprogrammierung von DAO nach ADO Tilo Böttcher, Technology Specialist Hans Brender, Presales Consultant tiloboet@microsoft.com Microsoft GmbH

DAOSub MakeDesignMaster()

Dim dbsNorthwind As DAO.DatabaseDim prpNew As DAO.Property' Open database for exclusive access.Set dbsNorthwind =

DBEngine.OpenDatabase("Northwind.mdb", True)With dbsNorthwind

' If Replicable property doesn't exist, create it.

' Turn off error handling in case property exists.

On Error Resume NextSet prpNew

= .CreateProperty("Replicable", dbText, "T").Properties.Append prpNew' Set database Replicable

property to True..Properties("Replicable") =

"T".Close

End WithEnd Sub

Von DAO nach ADODAO vs. ADO, ADOX und JRO; Replikation

ADO/JROSub MakeDesignMaster()

Dim repMaster As New JRO.Replica

' Make the Northwind database replicable. ' If successful, this will create a connection to the ' database. repMaster.MakeReplicable "Northwind.mdb", False

Set repMaster = Nothing End Function

Page 25: Datenbankprogrammierung von DAO nach ADO Tilo Böttcher, Technology Specialist Hans Brender, Presales Consultant tiloboet@microsoft.com Microsoft GmbH

Von DAO nach ADO

AgendaVon ISAM nach RDBMS?DAO vs. ADO, ADOX und JRO Performancetuning und Objektorientierung

Code-Migration und Fehlerquellen

Page 26: Datenbankprogrammierung von DAO nach ADO Tilo Böttcher, Technology Specialist Hans Brender, Presales Consultant tiloboet@microsoft.com Microsoft GmbH

Von DAO nach ADOPerformance

CursorConnection “rules”. Wird für einen RecordSet keine “CursorLocation” gesetzt erhält dieser die Einstellung auf Connection BasisFür remotable Recordsets muss dies “adUseClient” seinBei incompatiblen Cursoreinstellungen versucht der Provider einen “best guess” zu machen.

Default:• Connection --> adUseServer• Recordset --> adUseServer

– Scroll: adOpenForwardOnly

– Isolation: adLockReadOnlyFür Remotable

• Connection --> adUseClient• RecordSet --> erhält Setting

von Conncetion Object oder explizit setzten

– Scoll: odOpenDynamic oder adOpenKeyset

– Isolation: adLockBatchOptimistic

Page 27: Datenbankprogrammierung von DAO nach ADO Tilo Böttcher, Technology Specialist Hans Brender, Presales Consultant tiloboet@microsoft.com Microsoft GmbH

Von DAO nach ADOPerformance

Connection“Teuer”, vor allem bei Web ApplikationenAsynchron ist O.K. aber nicht für 3-Tier ApplikationenConnection Objekte sollten bei einer Web App nicht im Session Object abgespei-chert werden

• Connection immer explizit erzeugen “under the hood” Connections nicht poolable

Abhilfe--> Connection Pooling

Page 28: Datenbankprogrammierung von DAO nach ADO Tilo Böttcher, Technology Specialist Hans Brender, Presales Consultant tiloboet@microsoft.com Microsoft GmbH

Von DAO nach ADOPerformance

Command und ConnectionAsynchrone Operationen (default ist synchron)3 Möglichkeiten

• adAsyncExecute: ADO führt Command in einem zweiten Thread aus, über ExecuteComplete erfolgt die Notification

• adAsynchFetch: Zweiter Thread, bei einem Fetch wird solange geblockt bis der Datensatz gelesen ist.

– adUseClient als CursorLocation

• adAsyncFetchNonBlocking: Niemals Blocking, wenn ein Fetch auf einen Datensatz erfolgt der noch nicht da ist, erfolgt eine MoveEOF; im nächsten Fetch werden dann die Daten vorhanden sein.

• adUseClient als CursorLocation erforderlich

Page 29: Datenbankprogrammierung von DAO nach ADO Tilo Böttcher, Technology Specialist Hans Brender, Presales Consultant tiloboet@microsoft.com Microsoft GmbH

Von DAO nach ADOPerformance

CommandsBeste Performance über Stored ProceduresParameter im Code definieren (nicht über Refresh, extra Roundtrip zum Server)Command Typ angebenAsynchron wenn angebrachtadExecuteNoRecordsPrepare - Falls es Sinn macht

Wenn der Typ nicht angegeben wird, versucht ADO über “Try and Error” den Typ zu erkennen

• Reihenfolge: aCmdText, adCmdTable, adCmdStoredProc, adCmdFile

Set cmd.ActiveConnection = cnn

‘Opening a table directly

cmd.CommandType = adCmdTable

Set rst = cmd.Execute(“authors”)

‘Executing a proc that doesn’t return results

cmd.CommandType = adCmdStoredProc + adExecuteNoRecords

cmd.Execute “sp_insert”

Page 30: Datenbankprogrammierung von DAO nach ADO Tilo Böttcher, Technology Specialist Hans Brender, Presales Consultant tiloboet@microsoft.com Microsoft GmbH

Von DAO nach ADOObjektorientierung

Kapselung von logischen Einheiten in Klassen – keine direkte Datenbindung an GUI-Elemente (siehe Demo)Arbeit mit zwei oder drei SchichtenGepufferter Zugriff auf typisierte Daten

Klasse 1

Form1Dim obj01 as new class1Dim obj02 as new class3

Klasse 2 Klasse 3

Form2Dim obj01 as new class1Dim obj02 as new class2

Benutzerschicht

Anwendungsschicht

Page 31: Datenbankprogrammierung von DAO nach ADO Tilo Böttcher, Technology Specialist Hans Brender, Presales Consultant tiloboet@microsoft.com Microsoft GmbH

Von DAO nach ADO

AgendaVon ISAM nach RDBMS?DAO vs. ADO, ADOX und JRO Tuning und Objektorientierung

Code-Migration und Fehlerquellen

Page 32: Datenbankprogrammierung von DAO nach ADO Tilo Böttcher, Technology Specialist Hans Brender, Presales Consultant tiloboet@microsoft.com Microsoft GmbH

Von DAO nach ADOCode Migration und Fehlerquellen

DEMO

Page 33: Datenbankprogrammierung von DAO nach ADO Tilo Böttcher, Technology Specialist Hans Brender, Presales Consultant tiloboet@microsoft.com Microsoft GmbH

http://www.microsoft.com/germany/msdn/techtalk

http://www.microsoft.com/germany/datahttp:// msdn.microsoft.com/libraryhttp://www.microsoft.com/AccessDev/ProdInfo/AUT97dat.htm

http://www.vba-magazin.de/http://www.basicworld.com/

NewsgroupsServer msnews.microsoft.commicrosoft.public.de.germany.entwickler.techtalkmicrosoft.public.de.germany.entwickler.techtalk.office2000

Links und Newsgroups

Page 34: Datenbankprogrammierung von DAO nach ADO Tilo Böttcher, Technology Specialist Hans Brender, Presales Consultant tiloboet@microsoft.com Microsoft GmbH

Informationen von Microsoft Press

http://www.microsoft.com/germany/mspress

Datenbankprogrammierung mit Visual Basic 6Autor: Walter Doberenz, Thomas KowalskiISBN: 3-86063-485-2Umfang: 633 SeitenPreis: 79,00 DM

ADO-Programmierung

Autor: David Sceppa

ISBN: 3-86063-618-9

Umfang: 384 Seiten

Preis: 79,00 DM  

Artikel: Migrating from DAO to ADO

(Using ADO with the Microsoft Jet OLE DB Provider)

Alyssa Henry

Msdn Library

Page 35: Datenbankprogrammierung von DAO nach ADO Tilo Böttcher, Technology Specialist Hans Brender, Presales Consultant tiloboet@microsoft.com Microsoft GmbH

This document is for informational purposes only. MICROSOFT MAKES NO WARRANTIES, EXPRESS OR IMPLIED, IN THIS DOCUMENT.2000 Microsoft Corporation. All rights reserved. Companies, names, and/or data used in screens and sample output are fictitious, unless otherwise noted.Microsoft, Windows, and Windows NT are either registered trademarks or trademarks of Microsoft Corporation in the United States and/or other countries. Other product and company names mentioned herein may be the trademarks of their respective owners.