如何根据web.config中的登录详细信息读取多个连接字符串



我有一个使用4.5和ms-sql-server2012作为后端的asp.net web应用程序它有五个不同的数据库,每个不同的登录凭证存储在一个表中我在web.config中有五个不同的连接字符串作为

<add name="LocalSqlServer" connectionString="data source=.SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true" providerName="System.Data.SqlClient"/>
    <add name="MainConnStr" connectionString="data source=.SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|main.mdf;User Instance=true" providerName="System.Data.SqlClient"/>

etc

用户将在那里输入登录凭据,我希望根据登录凭据,用户将在整个项目中连接到他/她的数据库。

为此,我使用了会话对象在注册按钮点击事件中

if(user=="local")
session["connectionstring"]="LocalSqlServer"
else
{
 session["connectionstring"]="MainConnStr";
}

并在整个应用程序中使用此会话对象,如

string strcon = ConfigurationManager.ConnectionStrings[""+session["connectionstring"]+""].ConnectionString;
SqlConnection con = new SqlConnection(strcon);
con.Open();

上面的代码是根据我的要求为我工作的,但我有一个非常大的项目,有没有更好的方法来实现我的要求,或者我应该坚持以上的解决方案。

请有人给我提供更好的方法或解决方案来处理这种情况。

试试这个:

<connectionStrings>
  <add name="local" 
       providerName="System.Data.SqlClient"
       connectionString= "data source=.SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true" />
  <add name="main" 
       providerName="data source=.SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|main.mdf;User Instance=true" />
</connectionStrings>

用法:

var conn1 = ConfigurationManager.ConnectionStrings["local"].ConnectionString;
var conn2 = ConfigurationManager.ConnectionStrings["main"].ConnectionString;

如果你有用户字符串,那么:

var conn = ConfigurationManager.ConnectionStrings[user].ConnectionString;

最新更新