dkpage
@dkpage
Учусь

Как открыть SQLConnection для всего приложения, если для авторизации использую логин и пароль для подключения к SQL server?

Доброе!

Делаю программу на WinForms. Где будет много форм.
И авторизация состоит в том, что логин и пароль это данные для подключения к SQL server.
Беру я их из TextBox в форме авторизации.

Как сделать что бы подобным образом проходила авторизация и можно было обращаться с SqlCommand со всех форм которые будут в проекте и проверять что человек авторизован иначе выкинуть на форму авторизации?

Заранее спасибо большое) Буду благодарен за любую помощь.

Форма 1:
public partial class Form1 : Form
    {
        DataBaseConnection dataBase = new DataBaseConnection();

        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }

        private void button1_Click(object sender, EventArgs e)
        {
            string str = string.Format(@"Data Source=Test;Initial Catalog=TestBase;Integrated Security=false;User ID={0};Password={1}", login.Text, password.Text);
            dataBase.openConnection(str);
        }
    }


Класс (DataBaseConnection) с подключением к SQL server (лежит в папке Services):
internal class DataBaseConnection
    {
        SqlConnection sqlConnection;

        public async Task openConnection(string str)
        {


            using (sqlConnection = new SqlConnection(str))
            {
                try
                {

                    await sqlConnection.OpenAsync();
                }
                catch (SqlException ex)
                {
                    Console.WriteLine(ex.Message);
                }
            }

        }
    }
  • Вопрос задан
  • 173 просмотра
Решения вопроса 1
Не нужно делать авторизацию в каждой форме. Просто передавайте объект, через который вы работаете с БД, в конструкторе новой формы.
В случае получения ошибки (exception) при попытке выполнить sql команду, выдавайте окно подключения к бд.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
freeExec
@freeExec
Участник OpenStreetMap
Сохранять их в "настройки", а любая форма уже может их от туда достать.
Ответ написан
Комментировать
firedragon
@firedragon
Не джун-мидл-сеньор, а трус-балбес-бывалый.
Сделайте синглтон на все приложение.
Далее при попытке соединения выводите форму и соединяйтесь.
то есть по сути в любом месте приложения вызываете

DataBaseConnection.Instance.SomeMethod();

UPD оберните все в ORM, хоть в тот же dapper, ковыряться в чистом коннекшене та еще задачка
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы