不同用户的连接字符串

时间:2011-04-25 14:16:37

标签: sql string connection

如何将来自不同公司域的两个用户发送到不同的SQL数据库以检索/存储数据?我使用Application变量来存储连接字符串,而Request.ServerVariables(“LOGON_USER”)变量是获取域名的有效方法。是否要修改GLOBAL.AsA文件?两个数据库中的表名完全相同,因此我认为根据用户域更改连接字符串应该可以解决问题。

具有域ABC的用户A - >应用程序(“ConnecttoDB”)发送到数据库A. 用户B与域XYZ - >应用程序(“ConnecttoDB”)发送到数据库B

我有大约900多个经典的ASP页面,所以我真的不想添加一堆IF-THEN来在每个页面中选择正确的数据库。所有的想法都非常感谢!

更新:为了简单起见我设想了一个单独的应用程序变量(即:ConnecttoDB)但是,每当不同的用户访问并改变页面结果时,它的价值是否会不断变化?

3 个答案:

答案 0 :(得分:1)

您不能使用Application变量,因为它在所有用户之间共享。这将是一场竞争条件。相反,您需要使用Session object来存储连接,然后在需要连接到数据库时使用它。

myDB=Server.CreateObject("ADODB.Connection") 
StrConn = Session("ConnecttoDB") 
myDB.Open StrConn

答案 1 :(得分:0)

这是一种方法:

我猜你的网页代码隐藏文件的类在Page类中。在ASP.net项目中创建一个继承Page的新类文件。称之为JorgePage。然后,使您的代码隐藏文件类继承JorgePage

JorgePage中,写两个函数:

private string getUsersDomain()
{
      // returns the user's domain
}

protected string getUsersConnectionString()
{
    switch (getUsersDomain().ToUpper())
    {
        case "ABC":
        return Application("ConnecttoDB_ABC");
        break;
        case "xYZ":
        return Application("ConnecttoDB_XYZ");
        break;
    }
}

现在,函数getUsersConnectionString()在所有页面的上下文中都可用,并返回正确的连接字符串。此外,您只在一个地方拥有代码,因此如果您以后需要更改逻辑,则可以轻松完成。

答案 2 :(得分:0)

鉴于您使用的是经典ASP,您可以定义一个函数以在另一个.asp文件中返回相应的连接字符串,并使用#include指令将其添加到您的所有页面。

相关问题