質問

Microsoft.Practices.EnterpriseLibraryデータベースツールを使用していますが、接続文字列情報を just 使用して新しいデータベースを作成するのに問題があります。

理想的には、次のことをしたいです。

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

接続文字列のみを使用してデータベースを作成することは可能ですか?

もしそうなら、どのように達成できますか?

役に立ちましたか?

解決

あなたもできる


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

データベースオブジェクトの汎用性は保持しますが、接続文字列を使用して作成します。

他のヒント

接続文字列を動的に構築しています。次のConnectionStringは私の.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;

Er ...これは、CreateDatabaseが、接続文字列自体ではなく、(アプリの構成ファイルで指定された)接続文字列の name を想定しているためです。

次のコマンドを使用できることがわかりました...

SqlDatabase dbEngine = new SqlDatabase(connectionString);

Databaseオブジェクトほど汎用性はありませんが、私の目的には機能します。

みんなありがとう!

私の問題は解決しました。異なるデータベースに接続するURLの異なるサブドメインに従って、多くのデータベースを使用する単一のWebアプリがあります。など:


  • abc.test.com ------> Db_projectABCの使用

  • def.test.com ------> db_ProjectDEFの使用


url-rewriteを使用してサブドメイン名を解析し、サブドメイン名を使用して、メインデータベースに格納されているデータベース接続文字列を選択します。

ありがとう

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();
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top