Microsoft.practices.EnterPriselibrary 데이터베이스를 연결 문자열 만 엽니 다
-
03-07-2019 - |
문제
Microsoft.practices.enterpriselibrary 데이터베이스 도구를 사용하고 있으며 사용하는 새로운 데이터베이스를 만드는 데 어려움이 있습니다. 단지 연결 문자열 정보.
이상적으로는 다음을 수행하고 싶습니다.
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 ... 그건 CreateAbase가 기대하기 때문입니다 이름 연결 문자열 자체가 아닌 연결 문자열 (앱의 구성 파일에 지정된).
다음 명령을 사용할 수 있다는 것을 알게되었습니다 ...
SqlDatabase dbEngine = new SqlDatabase(connectionString);
데이터베이스 객체만큼 다재다능하지는 않지만 내 목적에 맞습니다.
모두 감사합니다!
내 문제를 해결했습니다. URL의 다른 하위 도메인에 따르면 다른 데이터베이스에 연결하기 위해 많은 데이터베이스를 사용하는 단일 웹 앱이 있습니다. 와 같은:
ABC.test.com ------> DB_PROJECTABC 사용
def.test.com ------> DB_ProjectDef 사용
URL-Lewrite를 사용하여 하위 도메인 이름을 구문 분석하고 하위 도메인 이름을 사용하여 기본 데이터베이스에 저장된 데이터베이스 연결 문자열을 선택했습니다.
감사
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();
제휴하지 않습니다 StackOverflow