Чтение из нескольких похожих неизвестных баз данных - PullRequest
2 голосов
/ 03 апреля 2012

Я новичок в кодировании на 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, чтобы он мог взаимодействовать с каждой базой данных. Скорее, я хочу, чтобы вызывалась одна функция, которую я отправляю в базу данных, которую я хочу использовать, а также соответствующую запись и информацию о полях. После этого он ищет базу данных и возвращает сохраненные данные.

Я нашел похожий вопрос здесь , но он был сосредоточен на оптимизации, а не на самом деле. Я также не смог следовать приведенному фрагменту кода, чтобы изменить его для использования с моим кодом.

Любая помощь, которую вы можете мне оказать, будет принята с благодарностью!

Ответы [ 2 ]

0 голосов
/ 03 апреля 2012

Я бы сделал что-то вроде этого: -

В 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
        }
}
0 голосов
/ 03 апреля 2012

Как вы сказали, вам нужен метод / функция, получающие параметр, содержащий строку соединения, которую вы хотите использовать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...