Goran Bibic Ответов: 3

Несколько строк подключения mssql в классе C#


Need for my app
Have database  2017,2018,2019...I add IN every form connection string



string BSS_2017 = Properties.Settings.Default.MG_SISTEM_2017CS;     
string BSS_2018 = Properties.Settings.Default.MG_SISTEM_2018CS;  
string BSS_2019 = Properties.Settings.Default.MG_SISTEM_2019CS; 
string con;  


Then in label chek value (2017,2018 or2019)


public popis()  
        {  
            InitializeComponent();  
            yearlabel.Text = getYear();  
        }  


And connect


private String getGodina()  
       {  
  
           string value = login.godina.ToString();  
  
           return value;  
       }  
  
  
       public void PullData()  
       {  
           if (yearlabel.Text == "2017")  
           {  
               con = BSS_2019;  
           }  
           else if (yearlabel.Text == "2018")  
           {  
               con = BSS_2018;  
           }  
  
           else if (yearlabel.Text == "2019")  
           {  
              con = BSS_2019;  
           }  
  
       }  


Что я уже пробовал:

That work fine...but...I must put this in every form in my app....need help
To create some class with this value.
Help?

3 Ответов

Рейтинг:
2

Goran Bibic

Я создаю класс

class ConnectionClass
   {

      // static string BSS_2017 = Properties.Settings.Default.MG_SISTEM_2017CS;
      // static string BSS_2018 = Properties.Settings.Default.MG_SISTEM_2018CS;
       static string BSS_2019 = Properties.Settings.Default.MG_SISTEM_2019CS;
       static string con;

       public static string PullData(string numYear)
       {
           switch (numYear)
           {
              // case "2017":
              //     con = BSS_2017;
               //    break;
              // case "2018":
               //    con = BSS_2018;
               //    break;
               case "2019":
                   con = BSS_2019;
                   break;
           }
           return con;
       }

   }



Как реализовать в формах?

Я вставил из

string conString = ConnectionClass.PullData(yearlabel.Text);  


Ошибка приклада-это
connection string proprerty has not intialized.  



private void Ulazni_racun_roba_lista_fill()  
        {  
              
//your string  
            string conString = ConnectionClass.PullData(godinalabel.Text);  
  
            using (SqlConnection openCon = new SqlConnection(conString))  
  
            {  
  
 String saveStaff = "SELECT * from dbo.popis_lista";  
  
  
                Console.WriteLine(saveStaff);  
  
//Here erorr  connection string proprerty has not intialized.  
                    openCon.Open();  
  
                    using (SqlDataAdapter querySaveStaff = new SqlDataAdapter(saveStaff, conString))  
  
                    {  
  
                        DataTable dt = new DataTable();  
  
  
                        querySaveStaff.Fill(dt);  
                        PopisListaDataGridView.DataSource = dt;  
                    PopisListaDataGridView.SelectionMode = DataGridViewSelectionMode.FullRowSelect;  
  
 PopisListaDataGridView.Update();  
                    PopisListaDataGridView.Refresh();  
  
}  
  
                }  
  
  
  
            }  


Richard MacCutchan

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

Рейтинг:
14

CPallini

Один public static метод (например, GetConnectionString) вашего заявления Program класс может быть подходящим.


Рейтинг:
1

Richard MacCutchan

Почему вы используете все эти жестко закодированные значения и, что еще хуже, текстовые метки в своей форме?

Создайте класс, который может перечислять имена всех существующих баз данных (используйте Каталог.Метод GetFiles (System.IO) | Microsoft Docs[^Затем вы можете представить эти имена в списке, который позволяет пользователю выбрать тот, который его интересует. Все, что вам нужно сделать, это отформатировать это имя в шаблоне строки подключения.


Goran Bibic

Теперь я хочу это сделать

Goran Bibic

Почему файлы? Нужно строку подкл к БД?

Richard MacCutchan

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