2012-04-02 4 views
2

Я новичок в кодировании в C#, большинство из моего опыта в простом старом C.Чтения из нескольких подобных неизвестных баз данных

Я пытаюсь кода приложения в C#, который будет искать информацию от одного из многого Access базы данных. Каждая база данных похожа на то, что они имеют одинаковые таблицы (называемые соответствующими самой базе данных (PIC, PICenum и т. Д.)). Одна и та же таблица в каждой базе данных содержит те же имена полей (LnetVar, Описание и т. Д.). Каждая база данных применяется к другому набору данных, который отличается от других баз данных, поэтому у меня есть несколько баз данных, а не одна общая база данных. Это также упрощает его обслуживание.

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

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

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

+0

'Copy-Paste-Modify kludge' ftfy – mellamokb

+0

Передача набора данных на конструктор, вероятно, не будет правильно сделать в классе, который отвечает за доступ к БД. Функция в этом классе должна просто принимать значение первичного ключа в качестве параметра и возвращать результаты на основе набора данных, возвращаемые базой данных. –

ответ

0

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

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 
     } 
} 
+0

Я выполнил большинство изменений, которые вы рекомендовали, однако он не распознает ConfigurationManager как допустимую запись. Я пропустил важный шаг на этом пути? – CraigC

+0

Добавили ли вы ссылку на System.Configuration.dll в свой проект? Вы можете щелкнуть правой кнопкой мыши по проекту> Добавить ссылку> вкладка .NET> Выбрать System.Configuration.dll. –

+0

Извините за задержку, я не добавил ссылку. Теперь он появляется. Благодаря! – CraigC

Смежные вопросы