Einzelnen Beitrag anzeigen

Elvis

Registriert seit: 25. Nov 2005
Ort: München
1.909 Beiträge
 
Delphi 2010 Professional
 
#4

Re: FirebirdClientFactory kann nicht genutzt werden

  Alt 25. Sep 2006, 11:51
Zitat von Jürgen Thomas:
Also will ich gezielt FirebirdClientFactory einbinden, was mir aber nicht gelingt:
Versuch A
Code:
dataFactory = FirebirdSql.Data.FirebirdClient.FirebirdClientFactory;
Zitat von Fehlermeldung:
FirebirdSql.Data.FirebirdClient.FirebirdClientFact ory ist ein Typ, das im gegebenen Kontext jedoch ungültig ist.
Versuch B mit gleicher Fehlermeldung:
Code:
dataFactory = FirebirdSql.Data.FirebirdClient.FirebirdClientFactory();
Versuch C
Code:
dataFactory = new FirebirdSql.Data.FirebirdClient.FirebirdClientFactory();
Zitat von Fehlermeldung:
Der Typ FirebirdSql.Data.FirebirdClient.FirebirdClientFact ory hat keine definierten Konstruktoren.
FirebirdClientFactory hat keinen öffentlichen Konstruktor!
Du kannst also höchstens FirebirdClientFactory.instance benutzen. Oder du gehst den Weg über die ProviderFactory, die macht nichts anderes.
Versuch A kann nicht gehen, da du einen Typen nicht einfach so in eine Variable stecken kannst (Kontext ungültig )
Versuch B kann nicht gehen, da ein Typ keine Funktion ist, selbst ein "new" (Versuch C) davor kann nicht gehen, da der Contructor private ist.
FirebirdClientFactory ist nunmal ein Singleton, auch wenn das hier IMHO Blödsinn ist.

Ich glaube der von mir gezeigte Weg ist der schniekeste, denn:
  • Du hast keine fixe Referenz auf den FbProvider in deinem Code
  • Das Settings system im VS05 macht solche Dinge sehr easy, da du eine passend typisierte Eigenschaft für jedes Settign bekommst.
Um Settings nutzen zu können musst du die Projektoptionen öffnen, dort seitlich auf den Reiter "Settings" gehen.
Wenn du noch keine Settings hast, findest du einen Link, der sie anlegen wird.
Nun kannst du einfach einen neuen Eintrag anlegen und ihm einen Default wert geben. (im Screenie siehst du den, den ich für den Bleistift code genommen habe)
Jetzt solltest du das hier machen können:
Code:
DbProviderFactory factory = DbProviderFactories.GetFactory(Settings.Default.DefaultProviderName);
using (IDbConnection connection = factory.CreateConnection())
{
    Console.WriteLine(connection);
}
btw: Den Teil des type-Attributes in der Provider-section, kannst du direkt aus dem Reflector kopieren. Dadurch kannst du dir sicher sein, dass Version, Culture und Public key token richtig sind.
Miniaturansicht angehängter Grafiken
jt.settings_915.png  
Robert Giesecke
I’m a great believer in “Occam’s Razor,” the principle which says:
“If you say something complicated, I’ll slit your throat.”
  Mit Zitat antworten Zitat