Problem mit DbProviderFactory (SqlSvr): Instance failure.

DevHB

Mitglied
Hallo zusammen,

ich habe ein kleines Problem mit der Verwendung der DbProviderFactory.

Ich habe ein Projekt bestehend aus mehreren DLLs (BC, BE, DAL usw...) und eine WinForm - Anwendung.

Mit folgendem Code will ich auf eine App.config (der WinFormAnwendung) zugreifen:
Code:
private ConnectionInformation _connectionInformation;
private IDbConnection _connection;

/// <summary>
/// represents the connection settings
/// </summary>
private class ConnectionInformation
{
     private DbProviderFactory _providerFactory;
     private ConnectionStringSettings _settings;

     public ConnectionInformation(ConnectionStringSettings settings)
     {
           this._providerFactory = DbProviderFactories.GetFactory(settings.ProviderName);
           this._settings = settings;
      }

     /// <summary>
     /// creates connection, specified by config file
     /// </summary>
     /// <returns>IDbConnection</returns>
     public IDbConnection createConnection()
     {
          IDbConnection connection = _providerFactory.CreateConnection();
          connection.ConnectionString = _settings.ConnectionString;
          return connection;
      }

}

#endregion


// DBConnectionClass
private ConnectionInformation _connectionInformation;
private IDbConnection _connection;

        public DBConnection()
        {
             initConnectionInformation();
             openConnection();
        }  
        private void openConnection()
        {
            _connection = _connectionInformation.createConnection();
            _connection.Open(); // <--- hier kommt die u.g. Meldung
        }

        private void initConnectionInformation()
        {
            Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);

            ConnectionStringSettings setting = config.ConnectionStrings.ConnectionStrings["db"];
            _connectionInformation = new ConnectionInformation(setting);
        }
Auszug der app.config:
<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">
<appSettings>
<add key ="DatabaseConnection" value ="SqlServer"/>
</appSettings>
<connectionStrings>
<add name ="db" connectionString="Data Source=Server\\SQLSvr;Initial Catalog=TestDB;Integrated Security=True;Pooling=False"
providerName ="System.Data.SqlClient"
/>

Ich bekomme die Meldung "Instance failure.".
Der ConnectionString der "_connection" ist gesetzt und funktioniert in anderen Anwendungen auch.
Timout steht auf 15, State ist "closed".

Im INet habe ich auch nicht wirklich was gefunden.

Hat da jemand eine Idee?

Vielen Dank.
 
Hi,
scheint irgendwie, dass in deinem ConnectionString was fehlt. Normalerweise sollte darin auch der Name des (OleDb)Providers und Name und Passwort (bzw. ein Flag für NT Authentifizierung) enthalten sein. Diese Infos gibst du auch nicht der ProviderFactory.

Gibt es bei diesem "Instance failure" noch eine InnerException? Wenn ja, was steht drin?
 
Hi,

also zum ConnectionString:
Wenn ich den "zu Fuss" angebe:
Code:
 string s = "Data Source=XXX\\SQLEXPRESS;Initial Catalog=TestDB;Integrated Security=True;Pooling=False" ;
            using (SqlConnection cn = new SqlConnection(s))
            {
                try
                {
                    cn.Open();
                    SqlCommand com = new SqlCommand("SELECT * FROM tblTest", cn);
                    SqlDataReader dr = com.ExecuteReader();
                    DataTable dt = new DataTable();
                    dt.Load(dr);
                    com = null;
                    dr = null;

                    return dt;
                }
                catch (Exception ex)
                {

                    throw ex;
                }
                
            }
funktioniert der ConnectionString, kann also nicht daran liegen.

Eine InnerException gibt es leider auch nicht.

Zum Öffnen der Verbindung:
Der Fehler tritt genau bei der Zeile "_connection.Open()" auf.
Alle Referenzen sind gegeben, sprich die "_connection" ist initialisiert, ConnectionString ist korrekt angegeben.
 
Hi,

so, dass Problem hat sich soeben erledigt, Schuld war wirklich ein doppelter Backslash in der App.Config.
Toll an dem Problem ist wirklich, dass es ein Beispiel aus dem Internet war und dieses auch schon nicht lief, wegen eben diesem doppelten Backslash.

Vielen Dank für Eure Bemühungen.
 
Zurück