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

呃......那是因为 CreateDatabase 需要连接字符串的名称(在您的应用程序的配置文件中指定),而不是连接字符串本身。

于 2008-12-31T23:24:05.487 回答
0

我发现您可以使用以下命令...

SqlDatabase dbEngine = new SqlDatabase(connectionString);

不像数据库对象那样通用,但它适用于我的目的。

谢谢大家!

于 2009-01-05T12:08:18.927 回答
0

它解决了我的问题。我有一个使用多个数据库的单个 Web 应用程序,根据 url 中的不同子域连接到不同的数据库。如:


  • 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 回答