Verwenden der SQL Pass-Through-Technologie
Man unterscheidet zwei Methoden für den Zugriff von Client/Server-Anwendungen auf Serverdaten:
- Remoteansichten
- SQL Pass-Through
Remoteansichten stellen die gebräuchlichste und einfachste Methode dar, um auf Remotedaten zuzugreifen und diese zu aktualisieren. Während des Übertragens einer lokalen Datenbank in eine Client/Server-Datenbank erstellt ein Upsizing-Assistent automatisch Remoteansichten in Ihrer Datenbank, oder Sie können nach dem Übertragen mit Hilfe von Visual FoxPro Remoteansichten erstellen. Weitere Informationen zu Remoteansichten finden Sie unter Erstellen von Ansichten.
Die SQL Pass-Through-Technologie ermöglicht Ihnen, SQL-Anweisungen direkt an einen Server zu senden. SQL Pass-Through-Anweisungen eignen sich besonders zur Verbesserung des Leistungsverhaltens Ihrer Client/Server-Anwendung, da sie auf dem Back-End-Server ausgeführt werden. In der folgenden Tabelle werden Remoteansichten mit SQL Pass-Through verglichen.
Vergleich zwischen der Remoteansichten- und der SQL Pass-Through-Technologie
Remoteansicht | SQL Pass-Through |
---|---|
Basiert auf einer SQL-Anweisung SELECT. | Basiert auf einer beliebigen serverspezifischen SQL-Anweisung, die Datendefinitionsanweisungen aufruft oder die Ausführung gespeicherter Prozeduren auf einem Server aktiviert. |
Kann während des Entwurfs als Datenquelle für Steuerelemente verwendet werden. | Kann nicht als Datenquelle für Steuerelemente verwendet werden. |
Bietet keine Möglichkeit, DDL-Befehle auf einer Datenquelle auszuführen. | Stellt ein Verfahren zur Verwendung von DDL-Befehlen auf einer Datenquelle zur Verfügung. |
Ruft nur ein Resultset ab. | Ruft ein oder mehrere Resultsets ab. |
Stellt eine integrierte Verwaltung von Verbindungen zur Verfügung. | Erfordert eine explizite Verwaltung von Verbindungen. |
Stellt integrierte Standardaktualisierungsinformationen für Aktualisierungs-, Einfüge- und Löschvorgänge zur Verfügung. | Stellt keine Standardaktualisierungsinformationen zur Verfügung. |
Stellt implizite SQL-Ausführung und Datenabruf zur Verfügung. | Stellt explizite SQL-Ausführung und Steuerung des Abrufs von Ergebnissen zur Verfügung. |
Stellt keine Transaktionsverwaltung zur Verfügung. | Stellt eine explizite Transaktionsverwaltung zur Verfügung. |
Speichert Eigenschaften permanent in Datenbanken. | Stellt temporäre Eigenschaften für einen SQL Pass-Through-Cursor basierend auf den Eigenschaften der Arbeitssitzung zur Verfügung. |
Setzt beim Ausführen von SQL-Code das asynchrone, kontinuierliche Lesen ein. | Unterstützt das asynchrone, programmgesteuerte Lesen. |
Gegenüber Remoteansichten hat die SQL Pass-Through-Technologie folgende Vorteile:
Sie können serverspezifische Elemente verwenden, wie z. B. gespeicherte Prozeduren sowie Funktionen, die nur der Server bereitstellt.
Sie können neben den SQL-Erweiterungen, die der Server unterstützt, auch die Datendefinitions-, Serververwaltungs- und Sicherheitsbefehle verwenden.
Sie verfügen über mehr Möglichkeiten zur Steuerung der Aktualisierungs-, Lösch- und Einfügebefehle von SQL Pass-Through.
Sie verfügen über mehr Möglichkeiten zur Steuerung von Remotetransaktionen.
Tipp Visual FoxPro ist in der Lage, SQL Pass-Through-Abfragen zu verwalten, die mehrere Resultsets zurückgeben.
SQL Pass-Through-Abfragen haben jedoch auch einige Nachteile:
- Eine SQL Pass-Through-Abfrage gibt standardmäßig einen nichtaktualisierbaren Snapshot aus Remotedaten zurück, die in einem Cursor einer aktiven Ansicht gespeichert werden. Dazu müssen Sie mit Hilfe der CURSORSETPROP( )-Funktion einige Eigenschaften festlegen. Bei einer aktualisierbaren Remoteansicht ist es dagegen nicht erforderlich, Eigenschaften festzulegen, bevor Sie die Remotedaten aktualisieren können, da die Eigenschafteneinstellungen zusammen mit der Definition der Ansicht in der Datenbank gespeichert werden.
- Sie können nicht den Ansichts-Designer verwenden, sondern müssen SQL-Befehle direkt in das Befehlsfenster oder in ein Programm eingeben.
- Sie stellen die Verbindung zu der jeweiligen Datenquelle her und verwalten sie.
Remotedaten können Sie mit Hilfe von Remoteansichten oder unter Verwendung von SQL Pass-Through-Funktionen abfragen und aktualisieren. In vielen Anwendungen werden Sie sowohl Remoteansichten als auch SQL Pass-Through verwenden.
Verwenden von SQL Pass-Through-Funktionen
Damit Sie SQL Pass-Through verwenden können, um eine Verbindung zu einer Remote-ODBC-Datenquelle herzustellen, rufen Sie zunächst die Visual FoxPro-Funktion SQLCONNECT( ) auf. Danach können Sie unter Verwendung der Visual FoxPro SQL Pass-Through-Funktionen Befehle an die Remotedatenquelle senden, damit die Befehle dort ausgeführt werden.
So können Sie Visual FoxPro SQL Pass-Through-Funktionen verwenden
Prüfen Sie, ob Ihr System in der Lage ist, eine Verbindung zwischen Ihrem Computer und der gewünschten Datenquelle herzustellen. Für ODBC können Sie z. B. das Dienstprogramm Microsoft ODBC Test verwenden.
Stellen Sie mit Hilfe einer der Funktionen SQLCONNECT( ) oder SQLSTRINGCONNECT( ) eine Verbindung zu der gewünschten Datenquelle her.
Sie können z. B. mit Hilfe des folgenden Befehls eine Verbindung zwischen Visual FoxPro und der SQL-Serverdatenquelle
sqlremote
herstellen, wobei Sie sich als Mitglied der Systemadministration (Benutzernamesa
) mit dem Kennwortsecret
anmelden:nConnectionHandle = SQLCONNECT('sqlremote','sa','secret')
Anmerkung Sie können auch die SQLCONNECT( )-Funktion verwenden, um eine benannte Verbindung herzustellen.
Verwenden Sie Visual FoxPro SQL Pass-Through-Funktionen, um Daten abzurufen, die Sie in Visual FoxPro-Cursor speichern. Anschließend können Sie die abgerufenen Daten mit Hilfe von Visual FoxPro-Standardbefehlen und -funktionen verarbeiten.
Beispielsweise können Sie unter Verwendung des folgenden Befehls die Tabelle
authors
abfragen und den sich ergebenden Cursor durchsuchen:? SQLEXEC(nConnectionHandle,"select * from authors","mycursorname") BROWSE
Verwenden Sie die SQLDISCONNECT( )-Funktion, um die Verbindung zu der Datenquelle zu trennen.
Visual FoxPro SQL Pass-Through-Funktionen
In der folgenden Tabelle sind die Visual FoxPro SQL-Funktionen zusammengestellt, die das Arbeiten mit Remotedatenquellen unterstützen.
Aufgabe | Funktion | Zweck |
---|---|---|
Verwaltung von Verbindungen | SQLCONNECT( ) | Stellt eine Verbindung zu einer Datenquelle für SQL Pass-Through-Operationen her. |
SQLSTRINGCONNECT( ) | Stellt eine Verbindung zu einer Datenquelle unter Verwendung der Syntax für Verbindungszeichenfolgen her. | |
SQLDISCONNECT( ) | Hebt eine Verbindung zu einer ODBC-Datenquelle auf, so dass die angegebene Verbindungskennung überflüssig wird. | |
Ausführung und Steuerung von SQL-Anweisungen | SQLCANCEL( ) | Bricht eine SQL-Abfrage ab, die asynchron über eine aktive Verbindung ausgeführt wird. |
SQLEXEC( ) | Führt eine SQL Pass-Through-Abfrage über eine aktive Verbindung aus; gibt die Anzahl der erstellten Resultsets zurück oder 0, wenn die Ausführung von SQLEXEC ( ) noch andauert (asynchrone Verarbeitung). | |
SQLMORERESULTS( ) | Legt ein weiteres Resultset in einem Cursor ab. Gibt 0 zurück, wenn die Ausführung der Anweisung, welche das Resultset erstellt, noch andauert. | |
SQLPREPARE( ) | Kompiliert die SQL-Anweisung in der Datenquelle vor und bindet die Visual FoxPro-Parameter. Dies bedeutet, dass die aktuellen Parameterausdrücke für alle Parameter in der SQL-Anweisung gespeichert werden. | |
SQLCOMMIT( ) | Fordert die Übergabe einer Transaktion an. | |
SQLROLLBACK( ) | Fordert das Zurücksetzen einer Transaktion an. | |
Datenquelleninformationen | SQLCOLUMNS( ) | Speichert eine Liste mit Spaltennamen und zugehörigen Informationen in einem Cursor. Gibt 1 bei erfolgreicher Ausführung der Funktion zurück oder 0, wenn die Ausführung noch andauert. |
SQLTABLES( ) | Speichert die Namen von Tabellen der Datenquelle in einem Cursor. Gibt 1 bei erfolgreicher Ausführung der Funktion zurück oder 0, wenn die Ausführung noch andauert. | |
Verschiedene Steuerungsmöglichkeiten | SQLGETPROP( ) | Erhält eine Verbindungseigenschaft von einer aktiven Verbindung. |
SQLSETPROP( ) | Legt eine Eigenschaft einer aktiven Verbindung fest. |
Die Anweisungen SQLEXEC( ), SQLMORERESULTS( ), SQLTABLES( ) und SQLCOLUMNS( ) können im Synchronmodus durch Drücken von ESC unterbrochen werden, sofern SET ESCAPE auf ON festgelegt ist. Im Asynchronmodus können Sie diese Anweisungen jederzeit unterbrechen, indem Sie SQLCANCEL( ) ausgeben. Alle anderen SQL Pass-Through-Anweisungen arbeiten im Synchronmodus und können nicht unterbrochen werden.
Erstellen von Resultsets
Wenn Sie Daten mit Hilfe einer der SQL Pass-Through-Funktionen SQLEXEC( ) oder SQLMORERESULTS( ) abrufen, gibt Visual FoxPro Ihnen die Daten in entsprechend vielen Resultsets zurück. Resultsets stammen aus den Cursorn der jeweiligen Serverdatenquelle und werden zu Cursorn in Visual FoxPro. Der Standardname eines Resultsets lautet SQLRESULT.
Siehe auch
Implementieren einer Client/Server-Anwendung | Zugriff auf gespeicherte Prozeduren auf Servern mit Hilfe von SQL Pass-Through-Funktionen | Wiedergeben mehrerer Resultsets | Verarbeiten mehrerer Resultsets | Entwurf von Client/Server-Anwendungen | Upsizing von Visual FoxPro-Datenbanken | Erstellen von Ansichten