Datenbankanbindung über Netzwerk



  • Hallo

    ich habe ein Programm geschrieben auf der Basis von Interbase.
    Jetzt kann ich auf meinem Rechner das Programm zwar super verarbeiten, aber es sollte eigentlich auch von anderen Rechnern (mit dem gleichen Programm) auf die Datenbank auf meinem Rechner zugegriffen werden können.
    Mit Interbase hab ich bereits eine Verbindung erstellt, nur wie muss ich die Datenbanken auf den Clients einbinden damit es wieder geht ?

    Kann mir da jemand helfen ?!
    Ich denk mal das Problem liegt irgendwo im SQLConnection Modul vom Builder.

    Bernd



  • Hallo BerndKa,

    auf genau einem Rechner muß der Interbase-Server installiert sein, auf allen anderen Rechner wird der Interbase-Client installiert. In deinem Programm sollte ein Connection-String vorhanden sein, der Zeichensatz, Username, Oassword, Protokoll, Servername und Datenbankpfad beinhaltet.

    Mit welcher Interbase-Version arbeitest Du genau?

    Mit welchen Komponenten greifst Du auf die Datenbank zu? (IBO, IBX, dbExpress, ...)

    Zeig mal etwas Code...



  • Hallo

    ein Rechner hat den Server installiert, der andere den Client - das hab ich.
    Version 6.0.

    Was ist der Connection String ??
    Ich hab eine SQL Connection im Programm die über die Parametereingabe
    (direkt) auf dem Element (SQL Connection) konfiguriert ist.

    Zeichensatz ist ISO8859_1
    Username sysdba
    Passwort masterkey
    Servername hab ich nicht zur Auswahl
    Datenbankpfad was soll ich da eingeben - den Serverpfad

    Code gibt darüber nicht - wir ja alles im Element selbst eingestellt.

    Gruss
    Bernd



  • Hallo BerndKam,

    ein Rechner hat den Server installiert, der andere den Client - das hab ich.
    Version 6.0.
    Eine Version 6.0 gibt es meines Wissens nicht. Der Versionsstring ist normalerweise länger, z.B. "6.0.1.6". Auf allen Rechnern, die dein Programm einsetzen, sollte im System32-Ordner eine Datei namens gds32.dll zu finden sein. Diese Datei sollte auf allen Rechnern die gleiche Produktversion/Dateiversion (Explorer, rechte Maustaste, Kontextmenu Eigenschaften, Reiter Version) liefern, sonst gibt es im laufenden Betrieb Probleme. Näheres dazu unter:

    http://www.entwickler-forum.de/webx?13@132.FZjnaLQJaWd.0@.ee6b7f3
    bzw.
    http://www.entwickler-forum.de/webx?13@186.VZU9aMvXaO4.0@.ee8d05e

    Was ist der Connection String ??
    Ich hab eine SQL Connection im Programm die über die Parametereingabe
    (direkt) auf dem Element (SQL Connection) konfiguriert ist.
    Dazu nochmal meine Frage: Womit greifst Du auf die Datenbank zu? Welche Komponenten benutzt Du? (IBO, IBX, dbExpress, ...). Allen diesen Komponenten ist gemein, das bestimmte Parameter gesetzt werden müssen, damit der connect zur Datenbank funktioniert, allerdings heißen die Parameter eventuell anders. Hier mal ein Code-Beispiel für IBO-Komponenten...

    ibConnect ist vom Typ: TIB_Connection
    ibQuery ist vom Typ: TIB_Query

    //Connect auf Datenbank unterbinden
    	ibConnect->Connected = false;
    	//1. try - catch
    	try
    	{
    		//Einstellungen vornehmen
    		ibConnect->CharSet 			= "WIN1252";
    		ibConnect->LoginPrompt		        = false;
    		ibConnect->Username 			= "SYSDBA";
    		ibConnect->Password 			= "masterkey";
    		ibConnect->PageSize 			= 4096;
    		ibConnect->Protocol			= cpTCP_IP;
    		ibConnect->Server 			= asDBSvr;     //Rechnername oder IP-Adresse
    		ibConnect->Path 			= asDBPfad;   //Pfad und  Name der Datenbank
    
    		//Query verbinden
    		ibQuery->IB_Connection		        = ibConnect;
    		ibQuery->IB_Transaction 	        = ibConnect->DefaultTransaction;
    
    		//Jetzt Datenbank-Connect versuchen
    		ibConnect->Connected			= true;
    
    	} //1. try - catch
    	catch(EIB_Error *E)
    	{
    		//Fehlemeldungen abfangen
    	} //catch(EIBError *E)
    

    Zeichensatz ist ISO8859_1
    Username sysdba
    Passwort masterkey
    soweit ok...

    Servername hab ich nicht zur Auswahl
    Datenbankpfad was soll ich da eingeben - den Serverpfad
    ibConnect->Protocol = cpTCP_IP;
    ibConnect->Server = asDBSvr; //Rechnername oder IP-Adresse (Interbase-Server)
    ibConnect->Path = asDBPfad; //Pfad und Name der Datenbank (c:\pfad\Ordner\MeineDatenbank.gdb)

    Da dein Programm auf mehreren Rechnern laufen soll, mußt Du ein Protokoll vorgeben; die Interbase-DB-Gurus in den oben genannten Foren empfehlen TCP/IP. Du müßtest eigentlich auch eine englischsprachige Doku als Heft und PDF zum Interbase haben, schau mal im DevGuide.pdf nach, dort wird u.a. der Einsatz von den IBX-Komponenten beschrieben. Ansonsten ein sehr gutes und empehlenswertes Buch von Andreas Kosch: Interbase-Datenbankentwicklung mit Delphi. Das ist auch für C-Builder-Programmierer geeignet

    Code gibt darüber nicht - wir ja alles im Element selbst eingestellt.
    Meinst Du damit den Objektinspektor? Die obengenannten Eigenschaften (Server, Path, etc.) findest Du natürlich auch da. Ist halt Geschmackssache, wie man es macht.

    Konnte ich Dir damit ein wenig helfen?

    Grüße, Jürgen



  • Hallo Jürgen

    danke erstmal für die Antworten

    ich hab auf einem Rechner den Client V6.0.1 und auf dem anderen den Server V6.0.1 installiert.

    Im Builder benutze ich die Komponente dbExpress-SQLConnection (Eintragungen siehe unten) die gds32.dll ist miteingetragen.

    DriverName=Interbase
    Database=database\stammdaten.gdb
    RoleName=RoleName
    User_Name=sysdba
    Password=masterkey
    ServerCharSet=ISO8859_1
    SQLDialect=3
    BlobSize=-1
    CommitRetain=False
    WaitOnLocks=True
    ErrorResourceFile=
    LocaleCode=0000
    Interbase TransIsolation=ReadCommited

    Du benutzt bei deinem Beispiel die Komponente ibconnect -> wo kann ich die finden? Muss ich die installieren -> wenn ja wo gibts die ? Hier wären ja die Punkte mit Server uns Pfad enthalten - genau das brauch ich! Vielleicht bin ich ja auch blind uns sehe sie nur nicht. 😕

    Gruss
    Bernd



  • Hallo BerndKa,

    ich hab auf einem Rechner den Client V6.0.1 und auf dem anderen den Server V6.0.1 >installiert.
    Eine Version V6.0.1 gibt es meines Wissens nicht. Im Allgemeinen sind die Versionsnummern länger wie z.B. V6.0.1.6, V6.0.2.x (Open Source) oder V6.5.0.28 (Diese Versionen gibt es wirklich). Auf dem Markt gibt es viele Interbase-Versionen mit teilweise erheblichen Unterschieden im Bereich der Stabilität. Die einzige stabile Version des Interbase 6 ist die V6.0.1.6; die Interbase-Gurus warnen davor, die anderen Versionen einzusetzen.

    Deshalb nochmal meine Frage: Welche Version setzt Du ein?

    Im Builder benutze ich die Komponente dbExpress-SQLConnection (Eintragungen siehe unten) die gds32.dll ist miteingetragen.
    Die dbExpress-Kompos kenne ich nicht, zumindest sind die bei meinem BCB5 Enterprise nicht dabei.
    Wie meinst Du das: "Die gds32.dll ist miteingetragen"? Die gds32.dll muß lediglich auf den betreffenden Rechner im System32-Ordner vorhanden sein. Das macht i.A. die Installationsroutine des Interbase-Setups. Manchmal hilft es auch, die Datenbank so anzugeben:

    Rechnername:c:\pfad\ordner\meineDB.gdb
    127.0.0.1:c:\pfad\ordner\meineDB.gdb

    Das kannst Du bei den dbExpress-Komponenten auch mal versuchen.

    Benutzt Du die BDE?

    Du benutzt bei deinem Beispiel die Komponente ibconnect -> wo kann ich die finden? Muss ich die installieren -> wenn ja wo gibts die ? Hier wären ja die Punkte mit Server uns Pfad enthalten - genau das brauch ich!
    Diese Komponentensamlung hat mir mein Chef gekauft, ist aber meines Wissens für den Privatgebrauch kostenlos. Der Entwickler heißt Jason Wharton und hier kommt die Adresse: http://www.ibobjects.com/

    Als Alternative kannst Du mal schauen, ob Dein BCB eine Registrierkarte mit dem Namen InterBase bzw. InterBase Admin hat. Da findest Du okinal-Borland-Komponenten für den Zugriff auf Interbase-Datenbanken. Versuch erstmal die, weil bei den IB-Objects die Lernkurve ziemlich hoch ist.

    Vielleicht bin ich ja auch blind uns sehe sie nur nicht.
    Ach was. Ich glaube, das geht jedem machnmal so...

    Grüße, Jürgen



  • Hallo Jürgen

    dein Tip mit SERVER:PFAD hat gewirkt - so gehts.

    Vielen Vielen Dank für deine Hilfe. 👍 😃

    Viele Grüsse
    Bernd


Anmelden zum Antworten