在程序集之间传递连接字符串

时间:2010-09-02 01:39:46

标签: vb.net

我有两个可执行文件访问包含数据访问层对象的DLL 每个exe都可以有一个不同的配置包含服务器上的信息和 数据库名称,连接字符串等。

如何将配置信息传递给DAL对象?

显然我可以将配置字符串传递给DAL对象 每次我实现一个,但这似乎是混乱和重复的,因为DAL中的每个类都需要Config字符串的属性..

有人能告诉我是否有更好的方法?

我想知道实例化的DAL对象是否有办法从调用对象中读取一些属性而不必显式传递它们?

2 个答案:

答案 0 :(得分:0)

让所有DAL类派生自包含连接字符串属性的基类怎么样?

在这种情况下,您可以在子构造函数调用上调用base的构造函数,然后该基本构造函数将成为加载Connection字符串的单个位置。

如果在两个Exe中都使用了相同的ConfigKey,例如:“DBConnectionString” - 那么构造函数只会从配置文件“DBConnection”条目中加载值 - 无论哪个exe调用dal和连接字符串的正确值将被传递给它

实施将是以下几点...... 很抱歉使用类似C#的语法。我很久以前就习惯使用VB了。

class BaseDAL
{
  protected String _connectionString;
  BaseDAL ()
  {
    _connectionString = ConfigurationManager.AppSettings("DBConnectionString") 
  }
  ....    
}

class ChildDAL : BaseDal
{
  ChildDAL():base()
  {
  ....
  }
}

答案 1 :(得分:0)

也许我错过了一些东西,但你可以把连接字符串放到App.config或Web.config中。

<appSettings>
    <!-- This sets the server, the username, and the password to connect to the database -->
    <add key="SqlConnectionString"
             value="Data Source=servername;Database=dbname;User ID=username;Password=password;Charset=utf8;"
    />
</appSettings>

然后,在您的代码中,您只需阅读:

Shared connectionString As String = ConfigurationManager.AppSettings("SqlConnectionString")

我认为每个EXE只有一个App.config。

如果你真的为每个运行EXE的实例使用不同的连接字符串,你可以将它存储在缓存中,但我不认为这就是你正在做的事情。

编辑:我在我的示例中使用的连接字符串将连接到MySQL。显然,连接字符串本身会因数据库而异。