Verwalten von Verbindungen mittels SQL Pass-Through
Beim Erstellen einer Remoteansicht können Sie einen ODBC-Datenquellennamen oder einen Verbindungsnamen auswählen, der dann beim Aktivieren der Ansicht das Bindeglied zum Remoteserver darstellt. Wenn Sie mit SQL Pass-Through-Funktionen direkt auf Remotedaten zugreifen möchten, muss Ihnen die Kennung einer aktiven Verbindung zur Verfügung stehen. Eine Kennung ist ein Wert, der auf ein Objekt verweist; in diesem Fall verweist die Kennung auf eine Verbindung zu einer Datenquelle. Sie erhalten eine Kennung, indem Sie mit einer der Funktionen SQLCONNECT( ) oder SQLSTRINGCONNECT( ) eine Verbindung zu der gewünschten Datenquelle herstellen. Kann die Verbindung fehlerfrei hergestellt werden, empfängt Ihre Anwendung eine Verbindungskennung, die in späteren Visual FoxPro-Aufrufen verwendet werden kann.
Ihre Anwendung kann für eine Datenquelle mehrere Verbindungen anfordern. Sie können auch mit mehreren ODBC-Datenquellen arbeiten, indem Sie für jede Datenquelle, auf die Sie zugreifen möchten, eine Verbindung anfordern. Wenn Sie die Anzahl der eingesetzten Verbindungen einschränken möchten, können Sie Remoteansichten konfigurieren, um eine Verbindung zur gemeinsamen Nutzung freizugeben. Mit der SQLDISCONNECT( )-Funktion können Sie die Verbindung zu einer Datenquelle trennen.
Tipp Visual FoxPro stellt eine Verbindung zu einer ODBC-Datenquelle anhand der Datenquellendefinition her, die in der Windows-Datei Odbc.ini oder in der Registrierung von Windows NT gespeichert ist. Wenn Sie den Namen oder die Anmeldeinformationen einer Datenquelle ändern, müssen Sie bedenken, dass diese Änderungen sich darauf auswirken können, ob eine Anwendung, die auf diese Datenquelle zugreift, eine Verbindung zu dem gewünschten Remoteserver herstellen kann oder nicht.
Festlegen der Umgebungs- und der Verbindungseigenschaften
Die Client/Server-Umgebung wird jedes Mal eingerichtet, wenn Sie Visual FoxPro starten. Die Umgebung existiert für diese Arbeitssitzung von Visual FoxPro und wird gelöscht, sobald Sie Visual FoxPro beendet haben. Eine Client/Server-Umgebung enthält folgende Elemente:
- Globale Eigenschaften, die als Muster für neue Verbindungen dienen.
- Fehlerwerte für Fehler, die außerhalb einer bestimmten Verbindung auftreten.
Wenn Sie 0 als Kennung angeben (die Umgebungskennung), haben Sie Zugang zu den Einstellungen der globalen Eigenschaften. Mit der SQLSETPROP( )-Funktion können Sie sowohl die Standardeinstellungen der Verbindungsumgebung als auch die Eigenschaften einzelner Verbindungen festlegen. Die Regeln, die für die Eingabe von SQLSETPROP( )-Werten gelten, sind für die Umgebungseigenschaften sowie die Eigenschaften einzelner Verbindungen gleich:
- Bei Eigenschaften, für die es nur zwei Werte gibt, kann für eExpression ein logischer Wert (.F. oder .T.) verwendet werden.
- Der Name einer Eigenschaft kann bis auf die Mindestlänge gekürzt werden, bis zu der er noch unverwechselbar ist. So können Sie zur Angabe der Asnchronous-Eigenschaft z. B. "
Asynchronous
", "Asynch
" oder "A
" verwenden. Bei Eigenschaftennamen müssen Sie die Groß-/Kleinschreibung nicht beachten.
Wenn Sie eine Verbindung herstellen, erbt die Verbindung die Standardwerte der Verbindungseigenschaften. Mit SQLSETPROP( ) können Sie diese Werte ändern.
Festlegen der Eigenschaften einer Verbindung
Die aktuellen Einstellungen der Eigenschaften einer Verbindung können Sie abrufen, indem Sie eine SQLGETPROP( )-Funktion mit der Kennung der Verbindung ausgeben. In der folgenden Tabelle sind die Verbindungseigenschaften zusammengestellt, die Sie mit SQLGETPROP( ) abrufen können.
Visual FoxPro-Verbindungseigenschaften
Aufgabenstellung | Eigenschaft | Zweck |
---|---|---|
Anzeigen der Informationen über das Erstellen der aktiven Verbindung | ConnectString | Verbindungszeichenfolge für den Anmeldevorgang. |
DataSource | Der mittels ODBC definierte Name der Datenquelle | |
Kennwort | Verbindungskennwort | |
UserID | Benutzer-ID | |
Arbeiten mit gemeinsam genutzten Verbindungen | ConnectBusy | Wenn mit einer gemeinsam genutzten Verbindung gerade gearbeitet wird, ist die Eigenschaft auf Wahr (.T.), ansonsten auf Falsch (.F.) festgelegt. |
Steuern der Anzeige der Schnittstelle | DispLogin | Steuert, wann das ODBC-Anmeldedialogfeld angezeigt wird. |
DispWarnings | Steuert, ob Warnungen mit geringer Bedeutung angezeigt werden. | |
Steuern von Zeitintervallen | ConnectTimeout | Gibt den Zeitraum (in Sekunden) an, der vergeht, bevor ein Zeitüberschreitungsfehler für Verbindungen zurückgegeben wird. |
IdleTimeout | Gibt das Zeitüberschreitungsintervall für die Leerlaufzeit (in Sekunden) an. Entsprechende aktive Verbindungen werden nach dem angegebenen Zeitintervall aktiviert.1 | |
WaitTime | Steuert das Zeitintervall (in Millisekunden), das vergeht, bevor Visual FoxPro prüft, ob die SQL-Anweisung vollständig ausgeführt wurde. | |
QueryTimeout | Steuert den Zeitraum (in Sekunden), der vergeht, bevor ein allgemeiner Zeitüberschreitungsfehler zurückgegeben wird. | |
Verwalten von Transaktionen | Transactions | Legt fest, wie die Verbindung Transaktionen in der Remotetabelle verwaltet. |
Steuern des Abrufens von Resultsets und Ablegen in den Cursorn von Ansichten | Asynchronous | Gibt an, ob Resultsets synchron (Standard) oder asynchron zurückgegeben werden. |
BatchMode | Gibt an, ob SQLEXEC( ) Resultsets gleichzeitig (Standard) oder einzeln mit SQLMORERESULTS( ) zurückgibt. | |
PacketSize | Gibt die Größe des von der Verbindung verwendeten Netzwerkpakets an. | |
Anzeigen interner ODBC-Kennungen | ODBChdbc2 | Die interne ODBC-Verbindungskennung, die von externen Bibliotheksdateien (FLL-Dateien) verwendet werden kann, um die ODBC-API-Funktionen aufzurufen. |
ODBChstmt2 | Die interne ODBC-Kennung für Anweisungen, die von externen Bibliotheksdateien (FLL-Dateien) verwendet werden kann, um die ODBC-API-Funktionen aufzurufen. |
1. Wenn Sie sich im Modus "Manuelle Transaktionen" befinden, wird die Verbindung nicht deaktiviert.
2. Ist eine Verbindung deaktiviert, sind die Werte für ODBChdbc und ODBChstmt nicht mehr gültig. Diese Werte dürfen in einer Benutzerbibliothek nicht freigegeben oder gelöscht werden.
Weitere Informationen über Verbindungseigenschaften sowie deren Standardeinstellungen finden Sie unter SQLSETPROP( ).
Einstellen der Umgebungseigenschaften
Die Werte, die Sie in der Visual FoxPro-Umgebung bei Angabe der Kennung 0 festlegen, werden für jede spätere Verbindung oder Anlage als Muster bzw. Standardwerte verwendet.
So zeigen Sie die aktuelle Einstellung von Umgebungseigenschaften an
- Verwenden Sie SQLGETPROP( ) mit 0 als Wert für die Kennung.
Die im folgenden Beispiel angegebene Funktion zeigt die aktuelle Einstellung der Umgebungseigenschaft WaitTime an:
? SQLGETPROP(0, "WaitTime")
Wenn Sie die DispWarnings-Eigenschaft auf Wahr (.T.) festlegen, zeigt Visual FoxPro ab diesem Zeitpunkt alle umgebungsbezogenen Fehler an und legt die DispWarnings-Eigenschaft jeder neu hergestellten Verbindung auf Wahr (.T.) fest.
Obwohl die Werte, die Sie für die Kennung 0 angegeben haben, als Musterwerte der einzelnen Verbindungen verwendet werden, können Sie auch benutzerdefinierte Eigenschaften für eine Verbindung festlegen, indem Sie für die entsprechende Verbindungskennung SQLSETPROP( ) angeben. Ausnahmen bilden dabei die Eigenschaften ConnectTimeout, PacketSize und DispLogin. Deren Einstellungen erbt die Verbindung während des Verbindungsvorgangs. Wenn Sie die Einstellung der Eigenschaften ConnectTimeout, PacketSize oder DispLogin ändern, wird die neue Einstellung erst wirksam, nachdem Sie die Verbindung erneut hergestellt haben.
Steuern von Verbindungs- und Ansichts-Objekten
Sie können Verbindungen und Ansichten steuern, indem Sie für die Verbindung bzw. das Ansichts-Objekt Eigenschaften festlegen. Eigenschaften, die Datenbanken, Tabellen, Tabellenfelder, Ansichtsdefinitionen, Ansichtsfelder, benannte bzw. aktive Verbindungen oder Cursor aktiver Ansichten steuern, werden Engine-Eigenschaften genannt. Mit den folgenden Visual FoxPro-Funktionen können Sie Engine-Eigenschaften anzeigen oder festlegen:
Funktionen zum Anzeigen von Engine-Eigenschaften | Funktionen zum Festlegen von Engine-Eigenschaften |
---|---|
CURSORGETPROP( ) | CURSORSETPROP( ) |
DBGETPROP( ) | DBSETPROP( ) |
SQLGETPROP( ) | SQLSETPROP( ) |
Welche Funktion die jeweils geeignete ist, hängt davon ab, ob Sie Eigenschaften für das Objekt 0 (Verbindung 0 und Cursor 0), die Objektdefinition in einer Datenbank (benannte Verbindung oder Ansichts-Definition) oder für das aktive Objekt (aktive Verbindung oder Cursor einer aktiven Ansicht) festlegen möchten. Die folgende Tabelle enthält die Objekte sowie die Funktionen, mit denen Sie Eigenschaften für das jeweilige Objekt festlegen können:
Objekt, für das Sie Eigenschaften festlegen möchten | Verbindung | Umgebung |
---|---|---|
Objekt 0 | SQLSETPROP( ) | CURSORSETPROP( ) |
Objektdefinition in einer Datenbank | DBSETPROP( ) | DBSETPROP( ) |
Aktives Objekt | SQLSETPROP( ) | CURSORSETPROP( ) |
Engine-Eigenschaften
In der folgenden Tabelle sind die Engine-Eigenschaften in alphabetischer Reihenfolge aufgeführt sowie die Objekte, für die diese Eigenschaften festgelegt werden können.
Engine-Eigenschaft | Betrifft |
---|---|
Asynchronous | Verbindungsdefinitionen: siehe DBSETPROP( ). Aktive Verbindungen: siehe SQLSETPROP( ). |
BatchMode | Verbindungsdefinitionen: siehe DBSETPROP( ). Aktive Verbindungen: siehe SQLSETPROP( ). |
BatchUpdateCount1 | Ansichtsdefinitionen: siehe DBSETPROP( ) Cursor aktiver Ansichten: siehe CURSORSETPROP( ) |
Buffering | Cursor aktiver Ansichten: siehe CURSORSETPROP( ) |
Caption | Tabellenfelder, Felder in Ansichtsdefinitionen: siehe DBSETPROP( ) |
Comment | Datenbanken, Tabellen, Tabellenfelder, Ansichtsdefinitionen, Felder in Ansichtsdefinitionen, Verbindungsdefinitionen: siehe DBSETPROP( ) |
CompareMemo | Ansichtsdefinitionen: siehe DBSETPROP( ) Cursor aktiver Ansichten: siehe CURSORSETPROP( ) |
ConnectBusy | Aktive Verbindungen: siehe SQLGETPROP( ) |
ConnectHandle | Cursor aktiver Ansichten: siehe CURSORGETPROP( ) |
ConnectName1 | Ansichtsdefinitionen: siehe DBSETPROP( ) Aktive Verbindungen: siehe SQLGETPROP( ) Cursor aktiver Ansichten: siehe CURSORGETPROP( ) |
ConnectString | Verbindungsdefinitionen: siehe DBSETPROP( ). Aktive Verbindungen: siehe SQLGETPROP( ) |
ConnectTimeout | Verbindungsdefinitionen: siehe DBSETPROP( ). Aktive Verbindungen: siehe SQLSETPROP( ). |
Database | Cursor aktiver Ansichten: siehe CURSORGETPROP( ) |
DataSource | Verbindungsdefinitionen: siehe DBSETPROP( ). Aktive Verbindungen: siehe SQLGETPROP( ) |
DataType | Felder in Ansichtsdefinitionen: siehe DBSETPROP( ) |
DefaultValue | Tabellenfelder, Felder in Ansichtsdefinitionen: siehe DBSETPROP( ) |
DeleteTrigger | Tabellen: siehe DBGETPROP( ) |
DispLogin | Verbindungsdefinitionen: siehe DBSETPROP( ). Aktive Verbindungen: siehe SQLSETPROP( ). |
DispWarnings | Verbindungsdefinitionen: siehe DBSETPROP( ). Aktive Verbindungen: siehe SQLSETPROP( ). |
FetchAsNeeded | Ansichtsdefinitionen: siehe DBSETPROP( ) Cursor aktiver Ansichten: siehe CURSORGETPROP( ) |
FetchMemo1 | Ansichtsdefinitionen: siehe DBSETPROP( ) Cursor aktiver Ansichten: siehe CURSORGETPROP( ) |
FetchSize1 | Ansichtsdefinitionen: siehe DBSETPROP( ) Cursor aktiver Ansichten: siehe CURSORSETPROP( ) |
IdleTimeout | Verbindungsdefinitionen: siehe DBSETPROP( ). Aktive Verbindungen: siehe SQLSETPROP( ). |
InsertTrigger | Tabellen: siehe DBGETPROP( ) |
KeyField | Felder in Ansichtsdefinitionen: siehe DBSETPROP( ) |
KeyFieldList2 | Cursor aktiver Ansichten: siehe CURSORSETPROP( ) |
MaxRecords1 | Ansichtsdefinitionen: siehe DBSETPROP( ) Cursor aktiver Ansichten: siehe CURSORSETPROP( ) |
ODBCHdbc | Aktive Verbindungen: siehe SQLGETPROP( ) |
ODBCHstmt | Aktive Verbindungen: siehe SQLGETPROP( ) |
Offline | Ansichtsdefinitionen: siehe DBGETPROP( ) |
PacketSize | Verbindungsdefinitionen: siehe DBSETPROP( ). Aktive Verbindungen: siehe SQLSETPROP( ). |
ParameterList | Ansichtsdefinitionen: siehe DBSETPROP( ) Cursor aktiver Ansichten: siehe CURSORSETPROP( ) |
Kennwort | Verbindungsdefinitionen: siehe DBSETPROP( ). Aktive Verbindungen: siehe SQLGETPROP( ) |
Path | Tabellen: siehe DBGETPROP( ) |
Prepared | Ansichtsdefinitionen: siehe DBSETPROP( ) |
PrimaryKey | Tabellen: siehe DBGETPROP( ) |
QueryTimeout | Verbindungsdefinitionen: siehe DBSETPROP( ). Aktive Verbindungen: siehe SQLSETPROP( ). |
RuleExpression | Tabellen, Tabellenfelder, Ansichtsdefinitionen, Felder in Ansichtsdefinitionen: siehe DBSETPROP( ) |
RuleText | Tabellen, Tabellenfelder, Ansichtsdefinitionen, Felder in Ansichtsdefinitionen: siehe DBSETPROP( ) |
SendUpdates2 | Ansichtsdefinitionen: siehe DBSETPROP( ) Cursor aktiver Ansichten: siehe CURSORSETPROP( ) |
ShareConnection | Ansichtsdefinitionen: siehe DBSETPROP( ) Cursor aktiver Ansichten: siehe CURSORGETPROP( ) |
SourceName | Cursor aktiver Ansichten: siehe CURSORGETPROP( ) |
SourceType | Ansichtsdefinitionen: siehe DBGETPROP( ). Cursor aktiver Ansichten: siehe CURSORGETPROP( ) |
SQL | Ansichtsdefinitionen: siehe DBGETPROP( ). Cursor aktiver Ansichten: siehe CURSORGETPROP( ) |
Tables2 | Ansichtsdefinitionen: siehe DBSETPROP( ) Cursor aktiver Ansichten: siehe CURSORSETPROP( ). |
Transactions | Verbindungsdefinitionen: siehe DBSETPROP( ). Aktive Verbindungen: siehe SQLSETPROP( ). |
Updatable | Felder in Ansichtsdefinitionen: siehe DBSETPROP( ) |
UpdatableFieldList2 | Cursor aktiver Ansichten: siehe CURSORSETPROP( ) |
UpdateName | Felder in Ansichtsdefinitionen: siehe DBSETPROP( ) |
UpdateNameList2 | Cursor aktiver Ansichten: siehe CURSORSETPROP( ) |
UpdateTrigger | Tabellen: siehe DBGETPROP( ) |
UpdateType | Ansichtsdefinitionen: siehe DBSETPROP( ) Cursor aktiver Ansichten: siehe CURSORSETPROP( ) |
UseMemoSize1 | Ansichtsdefinitionen: siehe DBSETPROP( ) Cursor aktiver Ansichten: siehe CURSORGETPROP( ) |
UserID | Verbindungsdefinitionen: siehe DBSETPROP( ). Aktive Verbindungen: siehe SQLGETPROP( ) |
Version | Datenbanken: siehe DBGETPROP( ) |
WaitTime | Verbindungsdefinitionen: siehe DBSETPROP( ). Aktive Verbindungen: siehe SQLSETPROP( ). |
WhereType | Ansichtsdefinitionen: siehe DBSETPROP( ) Cursor aktiver Ansichten: siehe CURSORSETPROP( ) |
1. Diese Eigenschaft eignet sich hauptsächlich für Remoteansichten; die Einstellung hat keine Auswirkungen auf das Leistungsverhalten lokaler Ansichten. Sie können diese Eigenschaft für lokale Ansichten im Rahmen einer Voreinstellung festlegen, und die lokale Ansicht später in eine Remoteansicht übertragen.
2. Diese Eigenschaft muss für Aktualisierungen festgelegt werden, die an eine Remotedatenquelle gesendet werden.
Verwenden von Transaktionen mit Remotedaten
Sie können Aktualisierungs-, Lösch- und Einfügevorgänge auf zwei Arten in Transaktionen einbetten:
- Modus "Automatische Transaktionen"
- Modus "Manuelle Transaktionen"
Der ausgewählte Transaktionsmodus legt fest, wie Visual FoxPro auf Ihrem lokalen Computer Transaktionen verwaltet.
Siehe auch
Ausführung von ODBC-Erweiterungen für SQL | Arbeiten im Modus "Automatische Transaktionen" | Verwenden der SQL Pass-Through-Technologie | Implementieren einer Client/Server-Anwendung | Entwurf von Client/Server-Anwendungen | Upsizing von Visual FoxPro-Datenbanken | Erstellen von Ansichten