读取多个类似的未知数据库

时间:2012-04-02 21:35:59

标签: c# database multiple-databases

我是C#编码的新手,我的大多数经验都是用普通的C语言编写的。

我正在尝试使用C#编写应用程序代码,该应用程序将从许多Access数据库中查找信息。每个数据库都是相似的,因为它们具有相同的表(命名适合于数据库本身(PIC,PICenum等))。每个数据库中的相同表包含相同的字段名称(LnetVar,Description等)。每个数据库都应用于不同的数据集,这与其他数据库不同,这就是为什么我有多个数据库而不是一个包含所有数据库的原因。它还使维护更容易。

我目前拥有的代码可以访问一个特定的数据库并提取我需要在代码中其他地方使用的数据。

class DB_Handler
{
    lsftTestDataSet.PICDataTable ds;

    public DB_Handler(lsftTestDataSet.PICDataTable ds)
    {
        this.ds = ds;
    }

    public string GetDescription(byte lnetVar)
    {
        foreach (lsftTestDataSet.PICRow currentRow in ds)
        {
            if (currentRow.LnetVar == lnetVar)
            {
                return currentRow.Description;
            }
        }

        return "";
    }
}

我不想做旧的Copy-Paste-Modify技巧,以便它可以与每个数据库进行交互。相反,我想要一个函数调用我发送我想要使用的数据库以及相关的记录和字段信息。从那里它搜索数据库并返回存储的数据。

我发现了一个类似的问题here,但它专注于优化,而不是实际操作。我也无法按照给出的代码片段进行修改,以便与我的代码一起使用。

非常感谢您给予我的任何帮助!

2 个答案:

答案 0 :(得分:0)

正如你所说,你需要的是一个接收包含你想要使用的连接字符串的参数的方法/函数。

答案 1 :(得分:0)

我会这样做: -

在Web.config或App.Config

<connectionStrings>
<add name="DbConnnectionString" connectionString="server=myserver;database={MyDatabasePlaceHolder};Integrated Security=SSPI;"
</connectionStrings>

然后在代码中(另外,需要添加System.Configuration.dll的引用)

using System.Configuration;
class DB_Handler
{
        string connectionString=string.Empty;
        public DB_Handler(string databaseName)
        {
           this.connectionString = ConfigurationManager.ConnectionStrings["DbConnnectionString"].ConnectionString.Replace ("{MyDatabasePlaceHolder}", databaseName)
        }

        public GetData()  
        {
          // Make use of this.connectionString to fetch data
        }
}