Client/Server-Programmierung
Erstellung von Client/ServerDatenbankapplikationen unter
Microsoft Visual FoxPro
Wizards &
Builders GmbH
Diese Schulung dient der Einführung in
die Client/Server-Programmierung mit
Microsoft Visual FoxPro und Microsoft
SQL Server
Wizards &
Builders GmbH
Themenübersicht
Client/Server
Connections und
Remote Views
SQL-Pass-Through
MS SQL-Server
Unterschiede zu Server-DB
Optimierung C/S
The Red Classes
Wizards &
Builders GmbH
Client/Server
Konzepte der Client/ServerProgrammierung unter
Microsoft Visual FoxPro
Wizards &
Builders GmbH
Definition Datenbank
Logische Datenunabhängigkeit
Physikalische Datenunabhängigkeit
Prozedurale Schnittstellen
Effiziente Abarbeitung von Operationen
minimale Datenredundanz
Datenintegrität
konkurrierender Datenzugriff
Datensicherheit
Datenschutz (Zugriffsschutz)
Wizards &
Builders GmbH
Definition Client/Server
Client/Server bedeutet:
ein Zusammenspiel von mehreren
Computern, mit der Verteilung der
Aufgaben zwischen den Maschinen
Der Server übernimmt Speicher und CPU intensive
Aufgaben
Der Client übernimmt Auswertungen und
Präsentation
Wizards &
Builders GmbH
Vorteile/Gründe Client/Server
Geringere Hardwarekosten (statt Mainframe o.ä.)
Geringere Entwicklungskosten (dito)
Integration mit PC Software
Skalierbarkeit von Architekturen (statt Multiuser)
Datensicherheit (Mirroring, Backup)
Geringere Belastung des Netzes
weil es der Chef/Kunde so will ... (Marketing)
Wizards &
Builders GmbH
Bewertung der Gründe
Der Trend zu Client/Server kommt
aus dem Bereich der Mainframes
(Downsizing)
Gründe für Upsizing:
Sicherheit der Daten
Anwendungen in WANs,
sehr große Datenmengen (Gigabytes)
der Wunsch des Kunden
Wizards &
Builders GmbH
Architekturen
Distributed
Presentation
Data
Management
Application
Function
Remote
Presentation
Data
Management
Application
Function
Distributed
Function
Data
Management
Application
Function
Remote
Data Mgmt.
Distributed
Data Mgmt.
Data
Management
Data
Management
Application
Function
Application
Function
Data
Management
Application
Function
Presentation
Presentation
Presentation
Presentation
Presentation
Presentation
Wizards &
Builders GmbH
Visual FoxPro und SQL-Server
Visual FoxPro arbeitet im Client/Server Bereich
besonders gut mit SQL Server zusammen
(Upsizing Wizard) - was aber nichts über die
erreichbare Performance aussagen soll ...
Grundsätzlich sind fast alle hier vorgestellten
Möglichkeiten auch mit anderen ODBC
Datenquellen gegeben (in Abhängigkeit vom
jeweiligen Treiber)
Wizards &
Builders GmbH
ODBC-Architektur
Application
ODBC API
Driver manager
ODBC SPI
ODBC driver
Network interface
Network
Database
Wizards &
Builders GmbH
Connections und Remote Views
Interaktive und programmatische
Definition von Connections/Remote
Views
Wizards &
Builders GmbH
ODBC-Manager
ODBC-Manager
(Systemsteuerung)
Installation der ODBCVerbindung
ggf. Network Lib
ggf. Trusted Conn.
ggf. Database Name
Wizards &
Builders GmbH
Interaktive Definition
Auswahl von Datasource
oder
Definiton einer Connection
Auswahl Tabellen
Definition von Remote Views
Zusatzeinstellungen für
Remote Views (im Menü)
Wichtig: Vergabe von Parametern!
Wizards &
Builders GmbH
Auswahl Datasource
Anlegen / Öffnen
Datenbank-container
Auswahl Datasource
oder
Definition einer
Connection
Wizards &
Builders GmbH
Definition Connection
User/Pwd/Databas
e
Aysnchron (?)
EndanwenderWarnungen (?)
Transaktionen
Paketgröße
diverse Zeiten
Wizards &
Builders GmbH
Auswahl Tabellen
Übersicht über
„Database“
Join auf dem
Server (siehe
ODBC-Join)
Wizards &
Builders GmbH
Definition Remote View (1)
Komplett-download
ohne Unterbrechung
Parameter:
?
Abfrage
Variable
Property
Wildcards
%
_
Wizards &
Builders GmbH
Definition Remote View (2)
Primärschlüssel
Änderbare Felder
„Send SQL-Update“
SQL-Where:
Key Fields
Key & Updatable
Key & Modified
Key & Timestamp (!)
Wizards &
Builders GmbH
Zusatzparameter Remote View
Share Connection
No. of Records to Fetch at a time
Maximum No. of Records to fetch
Use Memo when character field length >
No. of Records to Batch Update
Fetch Memo
Include Memo fields in Where-Clause
Precompile on Backend Server
Wizards &
Builders GmbH
Programmatisch Anlegen
CREATE CONNECTION
DATASOURCE sqlremote userid password
CREATE SQL VIEW REMOTE
oder CONNECTION <nameofconnection>
USE
AGAIN (ggf. gleiche Parameter!)
NOREQUERY(gleiche Daten)
NODATA
(keine Daten, nur Struktur)
Wizards &
Builders GmbH
SQL-Passthrough
Direktzugriff auf SQL-ServerDatenbanken statt Verwendung von
Remote Views in
Microsoft Visual FoxPro
Wizards &
Builders GmbH
Unterschiede zwischen
Remote View / SQL-PassThrough
Remote View:
VFP SQL-Select
Controlsource
Connection-Mgmt.
Default-Update-Info
Metadaten in DBC
Progressive Fetch
SQL-Passthrough:
Native Server SQL
DDL-Zugriff
Multiple
Result-Sets
Transactions
Non-Updatable
Cursorsetprop()
Wizards &
Builders GmbH
Zugriff mit SQL-Passthrough
Test der Connection (ODBC-Test)
*-- Verbindung herstellen
Handle=SQLConnect(‚data‘, ‘sa‘, ‘pwd‘)
*-- Ausführen Abfrage
=SQLExec(Handle, „SQL“, ‚cursor‘)
*-- Arbeiten mit View (Update/Revert)
=SQLDisconnect( Handle )
Wizards &
Builders GmbH
SQL-Connect / Metadata (1)
SQLCONNECT( )
SQLSTRINGCONNECT( )
SQLDISCONNECT( )
SQLTABLES( * )
SQLCOLUMNS( * )
Wizards &
Builders GmbH
SQL-Statements (2)
SQLEXEC( * )
SQLMORERESULTS( * )
SQLCANCEL( = )
SQLPREPARE( )
SQLCOMMIT( )
SQLROLLBACK( )
Abbruch
Precompiling
Commit Trans.
Cancel Trans.
Wizards &
Builders GmbH
SQL-Statements (3)
SQLEXEC( Handle, StoredProcedure)
SQLEXEC( Handle, Create Proc)
myproc as select *, select *, select * / SQLEXEC
SQLGETPROP( )
SQLSETPROP( )
AERROR( )
Wizards &
Builders GmbH
Parameter
Aufruf mit Parametern:
=SQLExec( Handle, „where = ?cVar“)
=SQLExec( Handle, „{CALL sp_test ()}“)
z.B. 2,4, ?@Result für Create Procedure sp_test @m1 int,
@m2 int, @result int output as select @m1 * @m2
Float (N,F,B) wird zu N konvertiert
Anzeigebreite 20
Date, Time wird zu Datetime
Wizards &
Builders GmbH
Joins, Connection Defaults
Outer Join auf Server:
a *= b
Outer Join auf ODBC:
{oj expression}
from {oj a left outer join b on a.id = b.id}
SQLSETPROP/SQLGETPROP( 0 )
Wizards &
Builders GmbH
Connection Properties
ConnectString, DataSource, UserID, Pw
DispLogin, DispWarning, ConnectBusy
Connect/Idle/QueryTimeout, WaitTime
Aynchronous, BatchMode
Transactions, PacketSize
ODBChdbc2, ODBChstmt2 (für FLLs!)
Wizards &
Builders GmbH
Transaktionen
DB/SQLSETPROP( Transaction, n)
Automatisch
Manuell
n = 1 (Default)
n=2
VFP-Transaktionen getrennt davon!
SQL-Passthrough hat nur einen
Transaktions-Level!
Wizards &
Builders GmbH
Asynchrone Ausführung (1)
Default: Synchrone Ausführung (Wait)
Möglich: Asynchrone Ausführung für
SQLEXEC, SQLMORERESULTS
SQLTABLES, SQLCOLUMNS
Abbruch mit SQLCANCEL( )
Non-Batch-Mode: Sqlmoreresults()
Mischung: Async/Sync-Batch/Non-Batch
Wizards &
Builders GmbH
Asynchrone Ausführung (2)
Wizards &
Builders GmbH
MS SQL Server
Einführung in das Arbeiten mit
Microsoft SQL-Server
Wizards &
Builders GmbH
Vorgeschichte
Dr. Eppstein und Mark Hoffmann
SYBASE ab 1987
Vertrieb durch Microsoft
Übernahme Quellcode als Eigenprodukt
Weiterentwicklung (Oberfläche,
Integration, Kundenwünsche)
Wizards &
Builders GmbH
Installation
Named Pipes als Protokoll (TCP/IP)
Physikalischer Pfad
Automatischer Start (nur bei Server)
Zeichensatz und Sortierung (einheitlich
für Datenbank)
Lokales Systemkonto (statt User)
Anlage MASTER.DAT (25 MB)
Wizards &
Builders GmbH
SQL Enterprise Manager
Registrierung beim Erststart („SA“)
SQL-Service Manager
SQL-Mail, SQL-Executive
Database Devices
Backup Devices
Databases
Logins (User, Rechte)
Wizards &
Builders GmbH
Devices
eigentlich „Drive“
„Create Now“ oder
via Executive
Mirroring
Vergrößern (Right /
Rechte beachten)
Verkleinern NEIN
Backup Devices
Platte, Bandlaufwerk
Wizards &
Builders GmbH
Datenbanken
in einem Device
Größe änderbar
max. 7 Terabyte
Gesamtgröße
Transaction Log
anderes Device
ausreichende Größe
„Create for Load“
statt mit „0“ auffüllen
Wizards &
Builders GmbH
Tabellen / Zugriffsrechte
Tabellen
Ansichten (SQL)
Stored Procedure
Transact SQL
extended procedures
Regeln (Feld-/SatzValidierung)
Defaultwerte
Datentypen (s.o.)
Wizards &
Builders GmbH
Pages / Indizes
Pagesize
2048 Byte je Page, 2016 für Datensätze
Pagelocking (ggf. mehrere Sätze gesperrt!)
Indizes
CLUSTERED
NON-CLUSTERED
vorsortiert, Lesen schnell
schneller beim Schreiben
Transaction Log
ohne „Order by“ wird erster Index verwendet
Wizards &
Builders GmbH
Server-Konfiguration
Fill Factor
LE Treshold Max.
Dateisperre
LE Treshold Percent
Locks
Memory
Open Databases
Open Objects
User Connections
Verbindungen
Füllgröße Indexpages
Pagelocks für
Dito in Prozent
Anzahl Satzsperren (32 B)
Speicher (2 Kilobyte)
Offene Datenbanken
Offene Objekte (70 Byte)
Offene
Speicherbedarf höher, bei Überschreitung
Probleme!
Wizards
&
Builders GmbH
Unterschiede SQL-Server-DB
Unterschiede von SQL-ServerDatenbanken zu Datenbanken in
Microsoft Visual FoxPro
Wizards &
Builders GmbH
Vorbereitung für Upsizing
Platz auf Harddisk großzügig!
Zugriffsrechte
Create Table/Default, Database/Select, Admin
Datenbankgröße (DBF*1.3, FPT*x)
Memofeld 32 Byte wird zu Page a 2048 Byte
(z.B. 10.000 Memos = 320 KB -> 20 MB )
Alter Database
Device-Größe
Größe Transaction-Log > Datenerstbestand
Wizards &
Builders GmbH
Objekt-Mapping (1)
MS Visual FoxPro:
Datenbank
Tabelle
Feld
Index
Default
Satzvalidierung
Feldvalidierung
Persistente Relation
MS SQL-Server:
Datenbank
Tabelle
Feld
Index
Default
Stored Proc (Upd/Ins)
Stored Proc (Upd/Ins)
Upd/Ins/Del-Trigger oder
Table Constraints
Wizards &
Builders GmbH
Field-Mapping (2)
MS Visual FoxPro:
Character
Currency
Date
Datetime
Double
Float
General
MS SQL-Server:
Char
Money
Datetime
Datetime
Float
Float
Image
Wizards &
Builders GmbH
Field-Mapping (3)
MS Visual FoxPro:
Integer
Logical
Memo
Memo Binary
Character Binary
Numeric
MS SQL-Server:
Int
Bit
Text
Image
Binary
Float
Wizards &
Builders GmbH
Index-Mapping (4)
MS Visual FoxPro:
Primary
Candidate
Regular
Unique
MS SQL-Server:
Clustered Unique
Unique
Non-Unique
Non-Unique
Keine Ausdrücke
Kein Asc/Desc
Wizards &
Builders GmbH
Expression Mapping (5 ff.)
MS Visual FoxPro:
cMonth() usw.
Day(), Hour() usw.
Dtoc() usw.
Date() usw.
.T. / .F.
keine Punkte bei
MS SQL-Server:
DATENAME()
DATEPART()
CONVERT()
GETDATE()
0/1
AND/OR/NOT/NULL
Wizards &
Builders GmbH
Aufräumarbeiten
Nachbesserung Konvertierung:
Eindeutige Schlüssel nachtragen (Upd)
Konfiguration von:
Datenbankzugriffsrechte (sp_adduser)
Objektzugriffsrechte (GRANT/REVOKE)
Recovering (ggf. Database Dump)
Backup Scheduling
Device Mirroring
Wizards &
Builders GmbH
Überprüfungen
Referentielle Integrität / Trigger (Neu!)
Default-Werte (erst nach Insert!)
Field/Table-Validations (Neu!)
Event Order ggf. anders
Lostfocus (Satz statt Feld)
Optimistic Record Locking (Page Lock!)
Wizards &
Builders GmbH
Optimierung Client/Server
Zugriffsoptimierung von
Client/Server unter
Microsoft Visual FoxPro
Wizards &
Builders GmbH
Connections
In Vorbereitung
Wizards &
Builders GmbH
Data Retrieval
In Vorbereitung
Wizards &
Builders GmbH
Queries und Views
In Vorbereitung
Wizards &
Builders GmbH
Masken
In Vorbereitung
Wizards &
Builders GmbH
Einfügen und Löschen
In Vorbereitung
Wizards &
Builders GmbH
Red Classes
Darstellung der Red ClassesKlassenbibliothek für C/S für
Microsoft Visual FoxPro
Wizards &
Builders GmbH
Red Classes für C/S
Application Manager
Form Manager
Toolbar Manager
Report Manager
Data Manager
Remote Views
Parameterized Views
SQL Pass Through
Connections
Wizards &
Builders GmbH
Was ist zu bedenken?
Parallentwicklung
lokal/remote ist leider
aufwendig
Ggf. immer C/S ?
(zB SQL Anywhere)
Ggf. Nie C/S ?
Optimierungen...
Red Classes kaufen
Wizards &
Builders GmbH
Vielen Dank!
Das waren die Themen:
Client/Server
Connections
Remote Views
SQL-Pass-Through
MS SQL-Server
Unterschiede zu
Serverdatenbanken
Optimierung C/S
The Red Classes
Wizards &
Builders GmbH
Wenn Fragen bestehen:
Wizards & Builders
Methodische SoftwareEntwicklung GmbH
Frankfurter Str. 21b
61476 Kronberg
Tel.: 06173-950906
Fax: 06173-950907
CIS: 101605,175
Wizards &
Builders GmbH