使用ASP.NET的多个数据库单个应用程序

本文关键字:数据库 单个 应用程序 ASP NET 使用 | 更新日期: 2023-09-27 18:09:56

我用Visual Studio和ASP创建了一个应用程序。. NET 4.0, MSSQL 2012 Express作为后端。

最初没有多个数据库的计划,所以我相应地为一个数据库编写了一个连接字符串。

现在,客户的要求发生了变化,他要求每年单独的数据库, 2015年的DATABASE2015, 2016年的DATABASE2016,等等。

我将迁移结构和数据从去年的数据库到新的一年的数据库,这很好。

但是我将如何连接到不同的数据库为不同的用户根据他们的年份选择在登录时间?

另外,我有一个单一的连接字符串在web。配置和我在整个项目中都引用了连接字符串在代码端和html端为asp.net控件。

请建议。

使用ASP.NET的多个数据库单个应用程序

正如Jon p所说,你的客户的要求对你来说将是一场噩梦,而且广泛的多年报告将非常困难。但既然你问了一个解决方案,我想我可以指导你怎么做。

在你的网页。配置文件,你可以设置你的连接字符串为,

<add name="YourConnStr" connectionString="Data Source=.;Initial Catalog={0};UID=sa;PWD=password;"
  providerName="System.Data.SqlClient" />

然后,在每个用户登录时,根据登录屏幕上选择的年份,您将从某些数据库表验证用户名和密码。在这个表中,您可以创建一个列用于存储数据库名称,并且在成功登录时,将该名称存储在会话变量中。

或者您可以使用来自Users表的外键创建另一个表。在您的新表中,您可以存储每个用户每年的数据库名称。

在您的DAL中,当获取SqlConnection的连接字符串时,您可以这样做,

var db = System.Web.HttpContext.Current.Session["dbName"].ToString(); // from session variable
var connection = System.Configuration.ConfigurationManager.ConnectionStrings["YourConnStr"].ConnectionString;
return new SqlConnection(string.Format(connection, db));