2

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

理想的には、次のことを行いたいと思います。

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

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

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

4

6 に答える 6

15

あなたもできる


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

Database オブジェクトの汎用性を維持しながら、接続文字列を使用して作成します。

于 2009-10-21T14:03:27.313 に答える
5

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;
于 2009-07-28T18:38:08.937 に答える
0

それは私の問題を解決しました。別のデータベースに接続するためのURL内の別のサブドメインに応じて、多くのデータベースを使用する単一のWebアプリがあります。そのような:


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

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


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

ありがとう

于 2011-03-17T02:45:26.570 に答える
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();
于 2012-03-28T06:51:02.323 に答える
0

次のコマンドを使用できることを発見しました...

SqlDatabase dbEngine = new SqlDatabase(connectionString);

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

みんな、ありがとう!

于 2009-01-05T12:08:18.927 に答える
0

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

于 2008-12-31T23:24:05.487 に答える