AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken C# Firebird Provider kann nicht verbinden?
Thema durchsuchen
Ansicht
Themen-Optionen

Firebird Provider kann nicht verbinden?

Ein Thema von Phoenix · begonnen am 21. Feb 2011 · letzter Beitrag vom 22. Feb 2011
Antwort Antwort
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.606 Beiträge
 
#1

Firebird Provider kann nicht verbinden?

  Alt 21. Feb 2011, 21:20
Datenbank: Firebird • Version: 2.5 • Zugriff über: Firebird .NET Provider 2.6
Hi,

ich habe eine Firebird-Datenbank (aktuelle Version), auf die ich einwandfrei mit IBExpert verbinden kann.

Nun will ich auf diese Datenbank mit dem Firebird ADO.NET Provider (auch aktuelle Version) verbinden.
Das hier ist der Code:
Code:
try
{
   FbConnection conn = new FbConnection(@"Server=127.0.0.1;User=SYSDBA;Password=masterkey;Database=C:\Users\smartBugs\Documents\PCTRADE.gdb");
   conn.Open();
}
catch (Exception ex)
{
   this.Text = ex.Message;
}
Wie gesagt, die Einstellungen funktionieren mit IBExpert einwandfrei. Der Firebird provider jedoch schmeisst bei conn.Open() eine IndexOutOfRangeException mit folgendem Stacktrace:

Code:
StackTrace " at System.Collections.ArrayList.get_Item(Int32 index)
at FirebirdSql.Data.Client.Managed.Version10.GdsDatabase.GetServerVersion()
at FirebirdSql.Data.Client.Managed.Version10.GdsDatabase.Attach(DatabaseParameterBuffer dpb, String dataSource, Int32 port, String database)
at FirebirdSql.Data.FirebirdClient.FbConnectionInternal.Connect()
at FirebirdSql.Data.FirebirdClient.FbConnectionPool.Create()
at FirebirdSql.Data.FirebirdClient.FbConnectionPool.CheckOut()
at FirebirdSql.Data.FirebirdClient.FbConnection.Open()
at DBConnectionTest.Form1.Form1_Load(Object sender, EventArgs e) in C:\\Users\\smartBugs\\Documents\\Visual Studio 2010\\Projects\\TheEntityLibrary\\DBConnectionTest\\Form1.cs:line 25"  string
Ich finde keine Lösung für das Problem. Es scheint einen Eintrag bei Firebird für das Problem zu geben, aber laut dessen Details ist genau dieses Problem in der Version die ich einsetze angeblich gefixt.

Jemand eine Idee?
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Benutzerbild von BUG
BUG

Registriert seit: 4. Dez 2003
Ort: Cottbus
2.094 Beiträge
 
#2

AW: Firebird Provider kann nicht verbinden?

  Alt 21. Feb 2011, 21:50
Interessant finde ich den assoziierten Eintrag im Repository.
Wenn das wirklich das einzige ist, was gemacht wurde, dann wurde nur die Buffergröße verdoppelt.
Intellekt ist das Verstehen von Wissen. Verstehen ist der wahre Pfad zu Einsicht. Einsicht ist der Schlüssel zu allem.
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.606 Beiträge
 
#3

AW: Firebird Provider kann nicht verbinden?

  Alt 21. Feb 2011, 21:58
Naja, es hilft ja auch nicht
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Benutzerbild von Nersgatt
Nersgatt

Registriert seit: 12. Sep 2008
Ort: Emlichheim
693 Beiträge
 
Delphi 10.1 Berlin Professional
 
#4

AW: Firebird Provider kann nicht verbinden?

  Alt 22. Feb 2011, 10:10
In Delphi.NET funktioniert es bei mir auf diese Art ganz wunderbar:

Delphi-Quellcode:
    fbCon.ConnectionString := GetFBConnectionString;
    fbCon.Open;
fbCon ist natürlich eine FBConnection.
Und der interessante Part:

Delphi-Quellcode:
function GetFBConnectionString : String;
// Erstellt den Connectionstring für die Verbindung zur Datenbank
var ini : TiniFile;
begin
  ini := TIniFile.Create(GetIniFilename);
  try
    Result := 'User=' + ini.ReadString(rsSectionDatenbank, rsSDBenutzer, rsSDBenutzerDefault) + ';' +
              'Password=' + ini.readString(rsSectionDatenbank, rsSDKennwort, rsSDKennwortDefault) + ';' +
              'Database=' + ini.ReadString(rsSectionDatenbank, rsSDDatenbank, rsSDDatenbankDefault) + ';' +
              'DataSource=' + ini.readString(rsSectionDatenbank, rsSDServer, rsSDServerDefault) + ';' +
              'Port=3050;' +
              'Dialect=3;' +
              'Charset=UTF8;' +
              'Role=;' +
              'Connection lifetime=0;' +
              'Connection timeout=15;' +
              'Pooling=True;' +
              'Packet Size=8192;' +
              'Server Type=0';
  finally
    ini.Free;
  end;

end;
Jens
  Mit Zitat antworten Zitat
Benutzerbild von dataspider
dataspider

Registriert seit: 9. Nov 2003
Ort: 04539 Groitzsch
1.350 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Firebird Provider kann nicht verbinden?

  Alt 22. Feb 2011, 10:34
Hi,

die Syntax des Verbindungs - Strings war für mich zu anstrengend.
Deshalb nehme ich lieber den StringBuilder:
Code:
FbConnectionStringBuilder fbStringBuilder = new FbConnectionStringBuilder();
fbStringBuilder.DataSource = "127.0.0.1";
fbStringBuilder.Database = "AIS";
fbStringBuilder.ClientLibrary = @"C:\Program Files (x86)\Firebird\Firebird_2_1\bin\fbclient.dll";
fbStringBuilder.UserID = "SYSDBA";
fbStringBuilder.Password = "masterkey";
fbStringBuilder.Port = 3051;
fbStringBuilder.Dialect = 3;
fbStringBuilder.Charset = "ISO8859_1";

string CnnStr = fbStringBuilder.ToString();

FbConnection con = new FbConnection(CnnStr);
Der Debugger zeigt mir dann den folgenden String:

"data source=127.0.0.1;initial catalog=AIS;client library=\"C:\\Program Files (x86)\\Firebird\\Firebird_2_1\\bin\\fbclient.dll\" ;user id=SYSDBA;password=masterkey;port number=3051;dialect=3;character set=ISO8859_1"

Vielleicht ist es ja nur so, dass er Sever, User und Database so nicht schluckt.

Frank
Frank Reim
  Mit Zitat antworten Zitat
Benutzerbild von Nersgatt
Nersgatt

Registriert seit: 12. Sep 2008
Ort: Emlichheim
693 Beiträge
 
Delphi 10.1 Berlin Professional
 
#6

AW: Firebird Provider kann nicht verbinden?

  Alt 22. Feb 2011, 10:55
Ich denke, der Fehler wird da liegen, dass er "Server=..." geschrieben hat, statt "DataSource=..."
Jens
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.606 Beiträge
 
#7

AW: Firebird Provider kann nicht verbinden?

  Alt 22. Feb 2011, 10:58
Auch mit den Änderungen und den zusätzlichen Angaben im Connectionstring (Server vs. Data source, Port, ClientLib etc. angeben oder auch nicht, in ziemlich vielen Kombinationen): Keine Änderung. Nach dem Attachen mit dem Server beim GetServerVersion bekomme ich die IndexOutOfRangeException.
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Benutzerbild von Nersgatt
Nersgatt

Registriert seit: 12. Sep 2008
Ort: Emlichheim
693 Beiträge
 
Delphi 10.1 Berlin Professional
 
#8

AW: Firebird Provider kann nicht verbinden?

  Alt 22. Feb 2011, 11:34
Das legt den Verdacht nahe, dass der Fehler an einer anderen Stelle zu suchen ist.
Passt die ClientLib mit der tatsächlichen Serverversion zusammen?
Jens
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#9

AW: Firebird Provider kann nicht verbinden?

  Alt 22. Feb 2011, 11:41
Hallo Sebastian,

unter der Version 2.5.2 hat auf jedenfall der Sourcecode aus diesem Beitrag geholfen. Vielleicht hilft er Dir ja auch weiter.

Gruß
Rolf
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.606 Beiträge
 
#10

AW: Firebird Provider kann nicht verbinden?

  Alt 22. Feb 2011, 12:14
Mannomann...

Reboot tut gut. Zweimal. Dann gings. Fragt mich bitte nicht, was die tatsächliche Ursache war, ich hab nämlich keine Ahnung.
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:29 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz