Datenzugriff - dFPUG

Werbung
VFX 10.0
Visual Extend
Datenzugriff
Uwe Habermann
[email protected]
Was machen wir?
•
•
•
•
•
•
Datenzugriff auf Tabellen
VFX – Form Builder
Datenzugriff mit CursorAdapter
VFX – CursorAdapter Wizard
VFX – Upsizing Wizard
VFX – Manage Config.vfx
Datenzugriff
• Was bietet VFP?
• Freie Tabellen
• DBC
• Die Stärke von VFP
• Lokale Ansichten
• Remote Ansichten und Verbindungen
• Cursoradapter
• Die neue Stärke von VFP
Nativer Datenzugriff
•
•
•
•
•
•
•
USE
BROWSE
Indexschlüssel
Seek, Replace
Pufferung
Transaktionen
Sehr schnell
• Rushmore-Optimierung
• Lokale Ansichten
Unser Datenmodell
Formulare basierend
auf Tabellen
• VFX – Form Wizard
• VFX – Data Environment Builder
• VFX – Form Builder
• Fertig! 
• Beispiel: Kunden.scx
Remote Datenzugriff
• Remote View
• Basiert auf Connection
• DSN
• Connectionstring
• DBC wird benötigt
Remote Datenzugriff
• CursorAdapter
• Klasse
• Eigenschaften
• Methoden
• Vererbung
• Verwendbar in Datenumgebung
• Programmatisch instanziierbar
• Ergebnis: Cursor
• Verfügbar seit VFP 8
Remote Views vs. CursorAdapter
• Remote View und Connection im DBC
gespeichert
• Nachteil:
• Verbindungsinformationen im Klartext lesbar
• ggf. manipulierbar
• CursorAdapter als programmatische oder
visuelle Klasse in die Exe-Datei
eingebunden
• Zur Laufzeit beliebig konfigurierbar
• Mit DBC und Remote Datenbanken einsetzbar
CursorAdapter
• Klasse
• Einheitlicher Datenzugriff
• Datenzugriff auf DBC und
(jede) Remote Datenbank möglich
• Umschaltbarkeit zur Laufzeit
• Builder in VFP vorhanden
CursorAdapter
• In VFX unterstütze Datenbanken
• DBC
• SQL Server
• Zur Laufzeit unterstütze Datenbanken
• Oracle
• DB2
• Fat Client – Datenzugriff über das Internet
Wie bekommen wir die
CursorAdapter?
• Eigenschaften manuell einstellen?
• Builder aus VFP?
• Sehr hilfreich um CursorAdapter verstehen
zu lernen!
VFX – CursorAdapter Wizard
• Automatische Generierung von
CursorAdapter-Klassen zu allen Tabellen und
Ansichten einer Datenbank
• für VFP Datenbanken
• für SQL Server
• Auswahl der Datenquelle
• Auswahl der Klassen und
Klassenbibliotheken
• Einstellungen aktualisierbarer Felder
• Beispiel: CAs in Appl.vcx für VSS erstellen
CursorAdapter in VFX
• CursorAdapter-Klasse verwendet
ConnectionManager
• ConnectionManager liest
Datenbankinformationen aus
Konfigurationsdatei (Config.vfx)
• CursorAdapter-Funktionalität in einer
Klasse gespeichert
• Holen von ID-Werten
• Wartbarkeit
Programmstart
• Im Init Ereignis des Anwendungsobjekts
wird der ConnectionManager instanziiert
• Beim Instanziieren eines CursorAdapters
wird vom ConnectionManager eine
Connection geholt
• Dabei werden aus einer verschlüsselten
Datei die Datenbankinformationen gelesen
• Die CursorAdapter-Klasse verwendet die
Informationen des ConnectionManagers
Formulare basierend
auf CursorAdapter
• VFX – Form Wizard
• VFX – Data Environment Builder
• VFX – Form Builder
• In allen VFX-Formularklassen können
CursorAdapter verwendet werden
• Fertig! 
• Beispiel: KundenCA.scx
IDs
• IDs sollten von der Datenbank vergeben werden
• CursorAdapter ermöglichen diese IDs nach dem
Speichern aus der Datenbank zu holen
• InsertCmdRefreshKeyFieldList – Liste zu
holender Felder
• InsertCmdRefreshCmd – wird nach dem Insert
ausgeführt – Hier können IDs geholt werden
• GETAUTOINCVALUE() bei DBC
SELECT * FROM <myTable> WHERE
<IdField>=GETAUTOINCVALUE()
• @@IDENTITY bei SQL Server
Arbeiten mit Parametern
• VFX - CDataFormPage Builder Parameter
• Hinzufügen von Steuerelementen zur
Eingabe der Parameter
• Automatisches Anlegen der
Formulareigenschaften
• caCustomers mit Where-Klausel
companyname LIKE
?thisform.tcompanyname
Planen einer neuen
Anwendung
• Nur mit CusorAdapter arbeiten!
• basierend auf cAppDataAccess
• Vorteile:
•
•
•
•
Es wird nur 1 Verbindung benötigt
Austauschbarkeit der Datenquelle
Wechsel von DBC zu SQL möglich
Entscheidung je Kunde ob DBC oder SQL
verwendet werden soll
Warum SQL Server?
•
•
•
•
•
Server basierte Datenbank
Online Backup
Stabilität
Skalierbarkeit
Einfacher Zugriff von verschiedenen
Anwendungen und Plattformen
• Performance?
Datenmodellierung
• Was sollte in VFP beachtet werden?
• Logisch
• numerisch 1 oder bit
• Datum
• Datetime
• NULL Werte sollten in allen Feldern einer
Remote Datenbank zugelassen sein
Datum
• VFP
• Gültigkeitsbereich
• 01.01.0001 – 31.12.9999
• Leeres Datum zulässig
• SQL
• Gültigkeitsbereich
• Datetime: 01.01.1753 – 31.12.9999
• SmallDatetime: 01.01.1900 – 06.06.2079
• Leeres Datum NICHT zulässig
Datum
• Leeres Datum in VFP
-> NULL im SQL
• Unzulässiges Datum in VFP
-> Datensatz kann nicht nach SQL
portiert werden
Logisch
• VFP
• Logisch
• SQL
• Numerisch 1
• Bit (ab SQL Server 2005)
VFX – Upsizing Wizard
• Transformierung der Struktur von lokalen
Tabellen und lokalen Ansichten sowie der
referenziellen Integrität
• Portieren von Daten auf einen SQL Server
• Quellcode wird mit VFP 9 SP 2 geliefert 
• Kann ein eigene Projekte eingebunden werden
VFX – Upsizing Wizard
• Upsizing der vorhandenen Datenbank
auf SQL Server
• Prüfen der Datenbank mit SSMS
• Fehlerbericht beachten!
• Beispiel: VSS.dbc
Datenquellen bearbeiten
Manage Config.vfx
• Verwaltung des Datenzugriffs
• Dialog in der Anwendung beim Kunden
nutzbar
• Problemloser Wechsel zwischen DBC
und SQL Server
• ConnectionString empfehlenswert
• Verschlüsselung mit Kennwort
• Einstellung mit dem Application Builder
• goprogram.cconfigpassword
Datenquellen bearbeiten
Manage Config.vfx
• Neuer Eintrag
• SQL
• Connectionstring
• DRIVER={SQL Server};
SERVER=(local);
UID=sa;PWD=sa;
DATABASE=VSS;
• Local (Native DBF…)
• Data
Wohin mit den VFX Tabellen?
•
•
•
•
Als freie Tabellen lassen
Im eigenen DBC
In eigener Remote Datenbank
In Daten-Datenbank
• als DBC
• oder Remote Datenbank
Test
• Läuft die Anwendung mit DBC und
SQL Server?
• Neue Datensätze anlegen
• Datensätze ändern
Multi-Client-Support
• Mandantenfähige Anwendungen mit
Remote-Datenbanken
• Datenzugriff bearbeiten – Config.vfx
• Mandantenfähige Anwendungen mit
DBC
• Pfadeinstellungen in Vfxpath.dbf
• Ordner "Data" beim Kunden nicht
verwendbar
Multi-Client-Support
• Wo sucht VFX die Datenbank?
• Config.vfx
• Vfxpath.dbf
• Hard-codiert in goProgram.cDataDir
Audit-Trail
• VFX – Audit Trigger Wizard
• Trigger in den Tabellen
• _audit_insert()
• _audit_update()
• _audit_delete()
• Anzeige des Protokolls über ein VFXFormular
• Und-Verknüpfung mit anderen Triggern
möglich
Audit-Trail
• Vfxauditedtables
• DBC
• SQL
• Keine Trigger
• Läuft mit Cursoradapter auf jeder
Datenbank
• Protokolliert einfügen, ändern und
löschen
Impersonation
• Datenzugriff mit einem anderen WindowsBenutzerkonto
• Sehr guter Schutz der Daten vor
unberechtigtem Zugriff
• Einstellung in Config.vfx
• Win User Name
• Win User Password
• Win Domain Name
• Wenn, dann müssen alle Datenbanken mit
Impersonation arbeiten
Pause!
• Um 11.15 Uhr geht es weiter
Herunterladen