2010-01-20 25 views
6

我有一个asp.net nTier应用程序。数据访问层是一个强类型的DataSet,由多个具有DataAdapter的DataTable组成。当用户登录时,他们选择要连接的数据库(来自成员资格数据库中的表)。我需要将选定的连接字符串传递给DataSet对象,该对象对于那些用户将保持不变,直到他们再次登录。强类型数据集的动态连接字符串

我在想,答案可能是创建一个DataSet对象的部分类,我可以将连接字符串传递给构造函数。我不知道如何去解决这个问题。

干杯

回答

3

你可以用分部类来做到这一点。

假设您的类型化数据集被称为HurrDurr:如果是空的第一次连接的内部属性进行访问

public partial class HurrDurr 
{ 
    public HurrDurr(string connex) 
    {  
    this._connection = new global::System.Data.SqlClient.SqlConnection(); 
    this._connection.ConnectionString = connex; 
    } 
} 

_connection只初始化。

+0

请问,我在vb.net上试过你的建议,但是我得到一个错误:“Error 33 _connection'不是DAL.ds1的成员”。任何想法,我会出错? – SausageFingers 2010-01-21 07:39:22

+0

@fly我不知道.ds1文件是什么。您可以查看由类型化数据集工具创建的代码(展开xsd并查看代码文件)。 VB版本可能会将连接另存为其他变量名称。 – Will 2010-01-21 11:17:21

+0

对不起,我应该更清楚。 DAL.ds1引用项目名称“DAL”和数据集名称“ds1”。 “ds1”是从xsd生成的类,我认为这就是你所说的HurrDurr。 查看代码后,我在表格适配器中看到_connection成员变量?这是我需要创建一个部分类反对吗? – SausageFingers 2010-01-21 16:29:49

3

终于到了这个底部。在新的模块中,我创建了一个表格适配器的部分类,这是我需要更改连接字符串的地方,我最初犯的一个错误是没有指定正确的名称空间。

下面是部分类我创建了让我来动态改变我的表适配器之一的连接字符串为表名为tblOptions:

Namespace ds1TableAdapters 
    Partial Public Class tblOptionsTableAdapter 
     Sub ChangeConnString(ByVal newConn As String) 
      Me._connection.ConnectionString = newConn 
     End Sub 
    End Class 
End Namespace 

感谢您的帮助威尔,它让我去的正确的方向。