Öffnen und Schließen einer Datenbank
Öffnen und Schließen einer Datenbank Beispiel zum Öffnen und Schließen einer Datenbank mit der Programmierschnittstelle
Um auf eine Datenbank zuzugreifen, muss zuerst die DLL initialisiert werden. Anschließend wird eine Datenbank-Instanz generiert, mit der die Datenbank geöffnet werden kann.
- Zuerst wird C16_InitPgif() aufgerufen, um die DLL zu initialisieren und Hauptspeicher für das Laden der Datenstrukturen zu reservieren. Diese Funktion muss nur einmal zu Programmbeginn aufgerufen werden.
- Für jede Datenbank, auf die zugegriffen wird, muss eine eigene Datenbank-Instanz initialisiert werden. Dies erfolgt durch die Übergabe des von C16_InitPgif() bereitgestellten Modul-Handles an die Funktion C16_InitInstance() .
- Schließlich wird der von C16_InitInstance() bereitgestellte Instanz-Handle an C16_OpenArea() übergeben, um die Datenbank zu öffnen und deren Datenstruktur zu laden.
Danach kann auf die Datenbank und die Datenstruktur zugegriffen werden. Vor Beendigung des Programms müssen alle geöffneten Datenbanken geschlossen und die Instanzen beendet werden.
Beispiel
#include "c16_pgx.h"
extern void MsgBox(char *lpszMsg);
static vCHAR *GetUserName();
static vCHAR *GetPassword();
void main(void)
{
char pszMsgText[80];
// Funktionsergebnis
int nErg;
// Modul-Handle
vPHANDLE hModule;
// Modul initialisieren und 4MB Speicher reservieren
nErg = C16_InitPgif(0x00400000, &hModule);
// Fehler?
if(nErg < 0)
{
sprintf(pszMsgText,
"Fehler %d beim Initialisieren des Moduls\n",
nErg);
MsgBox(pszMsgText);
}
else
{
// Instanz-Handle
vPHANDLE hInstance;
// Instanz initialisieren
nErg = C16_InitInstance(hModule, &hInstance);
// Fehler?
if(nErg < 0)
{
sprintf(pszMsgText,
"Fehler %d beim Initialisieren der Instanz\n",
nErg);
MsgBox(pszMsgText);
}
else
{
nErg = C16_OpenArea(hInstance, "TCP:CENTRAL", NULL,
"T40", GetUserName(), GetPassword(),
NULL, NULL, 32);
if(nErg < 0)
{
sprintf(pszMsgText
"Fehler %d beim Öffnen der Datenbank\n",
nErg);
MsgBox(pszMsgText);
}
else
{
// Verarbeitung fortsetzen
// Datenbank schließen
C16_CloseArea(hInstance);
}
// Instanz beenden
C16_TermInstance(hInstance);
}
// Modul beenden
C16_TermPgif(hModule);
}
}
vCHAR *GetUserName()
{
// Routine zur Eingabe des Benutzernamens
}
vCHAR *GetPassword()
{
// Routine zur Eingabe des Benutzerpassworts
}
Im obigen Beispiel werden die DLL und eine Datenbank-Instanz initialisiert. Anschließend wird die Datenbank T40.CA1, die sich auf dem Server CENTRAL befindet, geöffnet. Nach Verarbeitung der Daten wird die Datenbank geschlossen und die Instanz sowie das Modul beendet.