2

J'utilise les outils de base de données Microsoft.Practices.EnterpriseLibrary et j'ai des difficultés à créer une nouvelle base de données en utilisant juste les informations de la chaîne de connexion.Ouvrir la base de données Microsoft.practices.EnterpriseLibrary avec juste une chaîne de connexion

Idéalement je voudrais faire ce qui suit:

Database dbEngine = DatabaseFactory.CreateDatabase(
    "Data Source=myServerAddress;Initial Catalog=myDataBase;Integrated Security=SSPI;"); 

Est-il possible de créer une base de données en utilisant simplement la chaîne de connexion?

Si oui, comment cela peut-il être réalisé?

Répondre

11

Vous pouvez également faire


Database mydb = new EnterpriseLibrary.Data.Sql.SqlDatabase("connection string here"); 

et vous conserver la polyvalence de l'objet Database, mais créez le avec une chaîne de connexion.

0

Er ... Parce que CreateDatabase attend le nom d'une chaîne de connexion (comme spécifié dans le fichier de configuration de votre application), pas la chaîne de connexion elle-même.

+0

C'était juste un exemple de ce que je cherchais à faire, je me suis demandé si elle était en quelque sorte possible de le faire en utilisant une autre méthode. –

0

J'ai découvert que vous pouvez utiliser la commande suivante ...

SqlDatabase dbEngine = new SqlDatabase(connectionString); 

pas tout à fait aussi polyvalent que l'objet de base de données, mais il fonctionne pour mon but.

Merci à tous!

5

Je construis une chaîne de connexion à la volée de façon dynamique avec le suivant où ConnectionString est dans mon .config

 Database configdb = DatabaseFactory.CreateDatabase("ConnectionString"); 

       DbConnectionStringBuilder sb = configdb.DbProviderFactory.CreateConnectionStringBuilder(); 

       // Set the Connection String fields. 

       sb["Data Source"] = targetServer; 
       sb["Initial Catalog"] = targetDb; 
       sb["User ID"] = username; 
       sb["Password"] = password; 
       sb["Connect Timeout"] = dbTimeout; 

       GenericDatabase newDb = new GenericDatabase(sb.ToString(), configdb.DbProviderFactory); 
Database db = newDb; 
0

Cela a résolu mon problème. J'ai une seule application Web en utilisant de nombreuses bases de données, en fonction du sous-domaine différent dans l'URL pour se connecter à la base de données différente. tels que:


  • abc.test.com ------> en utilisant le Db_projectABC

  • def.test.com ------> en utilisant le db_ProjectDEF


J'utilise-rewrite url pour analyser le nom du sous-domaine, et utiliser le nom du sous-domaine pour choisir c'est la chaîne de connexion de base de données qui stockées dans la base de données principale.

Merci

0
Database objDatabase = new Microsoft.Practices. 
        EnterpriseLibrary.Data.Sql.SqlDatabase(@"Password=mypassword;Persist Security Info=True;User ID=sa;Initial Catalog=DatabaseName;Data Source=192.168.2.1"); 
     // Data Sourc is Your DB Name for ex : systemIp\\SqlExpress 

      DbConnection objCon = objDatabase.CreateConnection(); 
      objCon.Open(); 
      objDbTransaction = objCon.BeginTransaction(IsolationLevel.ReadUncommitted); 
      DbCommand cmd = objDatabase.GetSqlStringCommand(" Select sName from Emp"); 

      SqlDataReader dr = (SqlDataReader)objDatabase.ExecuteReader(cmd, objDbTransaction); 

      StringBuilder sb = new StringBuilder(); 

      while (dr.Read()) 
      { 
       sb.Append(Convert.ToString(dr[0])); 
       sb.Append(" "); 
      } 
      objDbTransaction.Commit(); 
      objCon.Close(); 

      //objDatabase.DbProviderFactory. 
      return sb.ToString(); 
+0

Cette question a déjà une réponse acceptée il y a * ans * ... – alestanis

Questions connexes