我正在使用Microsoft.Practices.EnterpriseLibrary数据库工具,而我在使用 连接字符串信息创建新数据库时遇到了问题。
理想情况下,我想做以下事情:
Database dbEngine = DatabaseFactory.CreateDatabase(
"Data Source=myServerAddress;Initial Catalog=myDataBase;Integrated Security=SSPI;");
是否可以仅使用连接字符串创建数据库?
如果是这样,怎么能实现呢?
答案 0 :(得分:13)
您也可以
Database mydb = new EnterpriseLibrary.Data.Sql.SqlDatabase("connection string here");
并且您将保留Database对象的多功能性,但是使用连接字符串创建它。
答案 1 :(得分: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;
答案 2 :(得分:0)
呃...那是因为CreateDatabase需要连接字符串的名称(在应用程序的配置文件中指定),而不是连接字符串本身。
答案 3 :(得分:0)
我发现你可以使用以下命令......
SqlDatabase dbEngine = new SqlDatabase(connectionString);
不像数据库对象那样通用,但它可以用于我的目的。
谢谢大家!
答案 4 :(得分:0)
它解决了我的问题。我有一个使用很多数据库的web应用程序,根据url中的不同子域连接到不同的数据库。如:
abc.test.com ------>使用Db_projectABC
def.test.com ------>使用db_ProjectDEF
我使用url-rewrite来解析子域名,并使用子域名来选择存储在主数据库中的数据库连接字符串。
由于
答案 5 :(得分: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();