AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Prism Verbindung zu Firebird-DB
Thema durchsuchen
Ansicht
Themen-Optionen

Verbindung zu Firebird-DB

Ein Thema von r_kerber · begonnen am 7. Apr 2005 · letzter Beitrag vom 19. Apr 2005
Antwort Antwort
Benutzerbild von r_kerber
r_kerber

Registriert seit: 11. Feb 2003
Ort: Trittau
3.538 Beiträge
 
Delphi XE Professional
 
#1

Verbindung zu Firebird-DB

  Alt 7. Apr 2005, 18:29
Datenbank: Firebird • Version: 1.5 • Zugriff über: BDP.Net
Ich habe mit IBExpert eine neue Firebird-Datenbank angelegt und dort dann eine Tabelle erzeugt. Die Einträge in der Registration Info entsprechen denen der mitgelieferten Demo-Datenbank. Nun richte ich die BDP Connection im Database Explorer ein. Auch hier richte ich mich nach den Einträgen der Demo-DB. Beim Verbindungstest erhalte ich dan die folgende Fehlermeldung:
Zitat:
Der Index (basierend auf Null) muß größer als oder gleich Null sein, und geringer als die Größe der Argumentenliste.
  Mit Zitat antworten Zitat
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.366 Beiträge
 
Delphi 10.3 Rio
 
#2

Re: Verbindung zu Firebird-DB

  Alt 8. Apr 2005, 05:24
Hi,

ohne es selbst getestet zu haben: Der BDP hat den schlechten Ruf sehr fehleranfällig zu sein! Besser auf den Firebird .NET Provider wechseln...

Lemmy
  Mit Zitat antworten Zitat
Benutzerbild von r_kerber
r_kerber

Registriert seit: 11. Feb 2003
Ort: Trittau
3.538 Beiträge
 
Delphi XE Professional
 
#3

Re: Verbindung zu Firebird-DB

  Alt 8. Apr 2005, 06:03
Zitat von Lemmy:
ohne es selbst getestet zu haben: Der BDP hat den schlechten Ruf sehr fehleranfällig zu sein! Besser auf den Firebird .NET Provider wechseln...
Mag sein, aber BDP hat LiveDaten zur Designzeit und man benötigt einen Komponentensatz (Connection, DataAdapter, Command) um auf verschiedene DB's zugreifen zu können. Beim normalen .NET-Provider benötigt man für jede Datenbank einen anderen...
  Mit Zitat antworten Zitat
Benutzerbild von r_kerber
r_kerber

Registriert seit: 11. Feb 2003
Ort: Trittau
3.538 Beiträge
 
Delphi XE Professional
 
#4

Re: Verbindung zu Firebird-DB

  Alt 18. Apr 2005, 12:59
Hat wirklich niemand eine Idee, was ich bei Erstellen einer Firebird-DB mit IBExpert beachten muß?
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#5

Re: Verbindung zu Firebird-DB

  Alt 18. Apr 2005, 13:35
Zitat von r_kerber:
Zitat von Lemmy:
ohne es selbst getestet zu haben: Der BDP hat den schlechten Ruf sehr fehleranfällig zu sein! Besser auf den Firebird .NET Provider wechseln...
Mag sein, aber BDP hat LiveDaten zur Designzeit und man benötigt einen Komponentensatz (Connection, DataAdapter, Command) um auf verschiedene DB's zugreifen zu können. Beim normalen .NET-Provider benötigt man für jede Datenbank einen anderen...
Sorry, aber das klingt wie ein Zitat von den KDTs. Und es ist eigentlich genauso falsch.
Der DBP bringt dir einen Monsterconnectionstring, in dem Infos angegeben werden müssen, die absolut unnötig sind.
Der BDP bringt dir die gleiche Funktionalität wie es die ADO.Net Interfaces bringen würden. (Wenn man mal diese DAU Funktionen á la AutoUpdate gönnerhaft ignoriert )

Wenn du in deinen Klassenbibliotheken ganz einfach NUR mit den ADO.Net Interfaces arbeitest, erreichst du das gleiche Ziel OHNE ein Borland.XXX in den Gac hauen zu müssen. Und OHNE stundenlang mit deinem Provider zu diskutieren, ob er dem BDP vertrauen will... (Dazu gab's hier schonmal 'nen Thread )

Du wirfst oben nur noch eine Typreferenz auf eine Sql-/Oracle-/Fb-/whatever- Connection rein.
Und schon kannst du davon eine Instanz anlegen (Du weißt ja, dass der Typ einen parameterlosen Constructor haben MUSS ).

Hier mal ein abstrakter Bleistift:
Code:
    internal class ConnectionDingsBums
    {
        public static IDbConnection GetConnectionInstance(Type connectionType)
        {
            if (typeof (IDbConnection).IsAssignableFrom(connectionType))
            {
                return connectionType.GetConstructor(Type.EmptyTypes).Invoke(null) as IDbConnection;
            } else
            {
                throw new ArgumentException("miep");
            }
        }
    }

    internal class Program
    {
        static void Main()
        {
            using (IDbConnection connection = ConnectionDingsBums.GetConnectionInstance(typeof (FbConnection)))
            {
                connection.ConnectionString = "miep";

                IDbCommand command = connection.CreateCommand();
                command.CommandText = "miep";

                IDataParameter parameter = command.CreateParameter();

                parameter.ParameterName = "miep";
                //DbType wird in der Instanz hinter dem
                //Interface zum richtigen Typen des Providers übersetzt
                // bei FB ist es VarChar...
                parameter.DbType = DbType.AnsiString;
                parameter.Value = "miep";
                command.Parameters.Add(parameter);

                IDataReader reader = command.ExecuteReader();

                while (reader.Read())
                {
                    Console.WriteLine(reader.GetString(0));
                }
            }
        }
    }

BTW: Was bringen dir Live Daten? Die Beispieldatensätze, die du bei den normalen Providern bekommst reichen doch eigentlich auch nzw. Ich habe gar keine Connection auf dem Form sondern binde höchstens IBindingList Implementierungen an irgendwelche Controls.

Ums es kurz zu fassen, ich persönlich finde einen Whatever-Provider 100-mal besser als so einen BDP mit einem 10MB Connectionstring.
Wenn man das System hinter ADO.Net verstanden hat, ist man auch nicht auf fixe Klassennamen angewiesen.
  Mit Zitat antworten Zitat
Benutzerbild von r_kerber
r_kerber

Registriert seit: 11. Feb 2003
Ort: Trittau
3.538 Beiträge
 
Delphi XE Professional
 
#6

Re: Verbindung zu Firebird-DB

  Alt 18. Apr 2005, 13:56
@Robert: Dann bin ich wohl ein DAU, weil ich genau auch diese AutoUpdate-Funktion verwenden möchte. Das war aber leider nicht die Antwort auf meine Frage!
  Mit Zitat antworten Zitat
UweR

Registriert seit: 15. Mär 2004
Ort: Bad Marienberg
219 Beiträge
 
Delphi 7 Professional
 
#7

Re: Verbindung zu Firebird-DB

  Alt 18. Apr 2005, 14:48
Zitat:
Hat wirklich niemand eine Idee, was ich bei Erstellen einer Firebird-DB mit IBExpert beachten muß?
Die Antwort auf deine Frage ist: Normalerweise absolut gar nichts.

Wenn du die Datenbank mit IBExpert wieder aufkriegst und deine Tabelle siehst ist alles OK und das Problem liegt eindeutig nicht bei IBExpert.

Möglich als Fehlerquelle wäre einmal die BDP an sich die ich auch keinem empfehlen kann.

Als zweites bei einer Mischinstallation von Interbase und Firebird der Versuch mit einem Interbase-Treiber auf Firebird zuzugreifen. Das geht zwar normalerweise gut, kann aber bei den Fehlermeldungen schon mal zu Mißverständnissen führen.
Gruß
UweR
  Mit Zitat antworten Zitat
Benutzerbild von r_kerber
r_kerber

Registriert seit: 11. Feb 2003
Ort: Trittau
3.538 Beiträge
 
Delphi XE Professional
 
#8

Re: Verbindung zu Firebird-DB

  Alt 18. Apr 2005, 17:39
Merkwürdig ist aber, daß ich mit dem BDP-Provider auf die von Firebird mitgelieferte DB (C:\Programme\Firebird\Firebird_1_5\examples\EMPLO YEE.FDB) ohne Probleme zugreifen kann.
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#9

Re: Verbindung zu Firebird-DB

  Alt 19. Apr 2005, 19:00
Zitat von r_kerber:
Merkwürdig ist aber, daß ich mit dem BDP-Provider auf die von Firebird mitgelieferte DB (C:\Programme\Firebird\Firebird_1_5\examples\EMPLO YEE.FDB) ohne Probleme zugreifen kann.
Willst du in dem Projekt nur Firebird benutzen, oder kann es sein, dass du später auf den MS SQL Server wechselst?
In ersten Fall wäre der FbProvider doch megakomfortabel. Er unterstützt eigentlich alles was FB kann, zum Beispiel auch das Eventing system.
Für den 2. Weg würde ich dir die Interfaces empfehlen. (Das würde dir auch häufig wiederverwendbare Klassen geben )
  Mit Zitat antworten Zitat
Benutzerbild von r_kerber
r_kerber

Registriert seit: 11. Feb 2003
Ort: Trittau
3.538 Beiträge
 
Delphi XE Professional
 
#10

Re: Verbindung zu Firebird-DB

  Alt 19. Apr 2005, 20:09
Moin Robert,

mein Wunsch ist es nun mal das AutoUpdate des BDP zu nutzen. Die Idee eines Client-Dataset finde recht gut. Inzwischen gelingt mir der Zugriff auf eine FB-DB auch. Habe die DB noch einmal komplett neu erstellt. Allerdings habe ich jetzt dieses Problem: Re: Firebird .NET Provider und Delphi 2005. Du hast darauf ja auch schon geantwortet. Das dort geschilderte Problem scheint aber nicht nur beim BDP- sondern auch beim "normalen" ADO.Net-Provider aufzutreten. Mein Ziel ist es die (ausgewählten) Daten einer Tabelle in einem Grid darzustellen, dort zu editieren und dann die geänderten Daten in die Tabelle zurückzuschreiben. Auf eine DB habe ich mich noch nicht festgelegt. In Erwägung ziehe ich MySQL, FB und schlimmstenfalls Access. Das wären mögliche DB's, die ich bei meinem Provider (kostenlos) nutzen könnte.
  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 18:03 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