gpt4 book ai didi

c# - 在连接字符串之间切换

转载 作者:太空宇宙 更新时间:2023-11-03 13:25:52 25 4
gpt4 key购买 nike

我是 asp.net MVC 的新手。我目前正在重写一个应用程序,该应用程序最初是使用 asp vb.net 1.1 从 asp c#.net 4.5 & mvc 开发的。

我已经使用 mvc simplemembership provider 设计了登录屏幕。但问题是这个应用程序为不同的办公地点使用了多个数据库。即登录用户将获得下拉列表框(站点)以选择除用户名和密码之外的位置。根据选择的位置,应用程序应该在不同的数据库中查看用户详细信息。

enter image description here

以下是多个连接字符串在现有应用程序中的显示方式。

        <appSettings>
<add key="DBConnection_bk" value="Server=server1;UID=sa;PWD=*****;pooling=false;connect timeout=800;database=bangkong;"/>
<add key="DBConnection_dxb" value="Server=server1;UID=sa;PWD=*****;pooling=false;connect timeout=800;database=dubai;"/>
<add key="DBConnection_hk" value="Server=server1;UID=sa;PWD=*****;pooling=false;connect timeout=800;database=Hongkong;"/>
<add key="DBConnection_syd" value="Server=server1;UID=sa;PWD=*****;pooling=false;connect timeout=800;database=sydney;"/>
<add key="DBConnection_sha" value="Server=server1;UID=sa;PWD=*****;pooling=false;connect timeout=800;database=shanghai;"/>
<add key="crServerName" value="server1" />
<add key="crLogin" value="sa" />
<add key="crPassword" value="*****" />
<add key="crDBConnection_bk" value="bangkong" />
<add key="crDBConnection_dxb" value="dubai" />
<add key="crDBConnection_hk" value="hongkong" />
<add key="crDBConnection_syd" value="sydney" />
<add key="crDBConnection_sha" value="shanghai" />
</appSettings>

我的问题是我可以使用 MVC 4 归档相同的功能吗?即根据选择的下拉列表框(站点)值,我可以在内部选择连接字符串吗?

我也愿意接受建议。如果以上不是正确的方法,那么存档的最佳方法是什么?

提前致谢!

最佳答案

您应该从代码和配置中动态构建您的连接字符串。

您可以在配置文件中存储可能的目标服务器和数据库,以及连接超时和池等设置,但每个都作为单独的配置值,而不是在连接字符串中一遍又一遍地复制它们。

使用服务器和数据库列表来构建您的站点组合框,并根据用户输入和配置设置构建连接字符串。

public bool TryLogin(out connectionString)
{
// set connectionString using input controls and config settings, as you see fit

using (var cn = new SqlConnection(connectionString))
{
try
{
cn.Open();
cn.Close();
}
catch (SqlException ex)
{
// connection attempt failed
return false;
}

// connection attempt succeeded, connection string proven to be valid
return true;
}
}

我还建议您查看 how to make your own configuration elements在 web.config 文件中。这将有助于加强您的设置类型,并使它们在代码中的使用更加清晰。

这样做,你的配置文件最终可能会变成这样:

<dbSettings timeout="800" pooling="false">
<possibleDbs>
<db server="server1" database="bangkong"/>
<db server="server1" database="shangai"/>
<!-- etc -->
</possibleDbs>
</dbSettings>

如您所见,这更加清洁和安全。根据您的要求,您可能会做得更好。

关于c# - 在连接字符串之间切换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22482954/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com