24 марта 2020

5 шагов для создания простой формы входа на C#

Frontend-разработчик в Foquz. https://www.cat-in-web.ru/
Инструкция из пяти шагов о том, как создать в Visual Studio форму авторизации для Windows-приложений на языке C# с хранением логинов и паролей в MySQL.
5 шагов для создания простой формы входа на C#

Многие приложения требуют авторизации для полноценного использования. Сегодня мы напишем простую форму авторизации Windows-приложений на языке C#.

Шаг 1. Создание базы

Первым делом создадим новую базу данных test для хранения тестовой информации. Добавьте таблицу user со следующими полями:

  • id (INT) c атрибутом AUTO_INCREMENT;
  • name (VARCHAR(100));
  • title (VARCHAR(100));
  • address (VARCHAR(100)).
Создание таблицы <code class="inline-code">user</code> в базе данных <code class="inline-code">test</code>
Создание таблицы user в базе данных test

Шаг 2. Создание проекта

Создайте проект для нового приложения. В Visual Studio для этого нужно зайти в меню File > New > Project.

Создание нового проекта в Visual Studio
Создание нового проекта в Visual Studio

После этого появится окно New Project:

Окно New Project в интерфейсе Visual Studio
Окно New Project в интерфейсе Visual Studio

В поле Name нужно вписать название вашего проекта, в поле Location – указать нужную директорию, в Solution name – ввести название решения. Заполнили данные – нажимаем OK.

Главный класс нового проекта в Visual Studio
Главный класс нового проекта в Visual Studio

Шаг 3. Создание интерфейса

Создайте представление будущей формы авторизации, как показано на рисунке ниже. Добавьте два поля (username и password) и кнопку для входа.

5 шагов для создания простой формы входа на C#

Шаг 4. Настройка соединения с базой

Создайте класс connection для настройки соединения с базой. Пример реализации представлен в листинге ниже:

        using System;  
using System.Collections.Generic;  
using System.Linq;  
using System.Text;  
using MySql.Data.MySqlClient;  
using System.Windows.Forms;  
using System.Data;namespace Connection_DB  
{  
    class connection  
    {  
          
        MySql.Data.MySqlClient.MySqlConnection conn;  
        string myConnectionString;  
        static string host = "localhost";  
        static string database = "test";  
        static string userDB = "ecco";  
        static string password = "password";  
        public static string strProvider = "server=" + host + ";Database=" + database + ";User ID=" + userDB + ";Password=" + password;  
        public bool Open()  
        {  
            try  
            {  
                strProvider = "server=" + host + ";Database=" + database + ";User ID=" + userDB + ";Password=" + password;  
                conn = new MySqlConnection(strProvider);  
                conn.Open();  
                return true;  
            }  
            catch (Exception er)  
            {  
                MessageBox.Show("Connection Error ! " + er.Message, "Information");  
            }  
            return false;  
        }        public void Close()  
        {  
            conn.Close();  
            conn.Dispose();  
        }        public DataSet ExecuteDataSet(string sql)  
        {  
            try  
            {  
                DataSet ds = new DataSet();  
                MySqlDataAdapter da = new MySqlDataAdapter(sql, conn);  
                da.Fill(ds, "result");  
                return ds;  
            }  
            catch (Exception ex)  
            {  
                MessageBox.Show(ex.Message);  
            }  
            return null;  
        }        public MySqlDataReader ExecuteReader(string sql)  
        {  
            try  
            {  
                MySqlDataReader reader;  
                MySqlCommand cmd = new MySqlCommand(sql, conn);  
                reader = cmd.ExecuteReader();  
                return reader;  
            }  
            catch (Exception ex)  
            {  
                MessageBox.Show(ex.Message);  
            }  
            return null;  
        }        public int ExecuteNonQuery(string sql)  
        {  
            try  
            {  
                int affected;  
                MySqlTransaction mytransaction = conn.BeginTransaction();  
                MySqlCommand cmd = conn.CreateCommand();  
                cmd.CommandText = sql;  
                affected = cmd.ExecuteNonQuery();  
                mytransaction.Commit();  
                return affected;  
            }  
            catch (Exception ex)  
            {  
                MessageBox.Show(ex.Message);  
            }  
            return -1;  
        }  
    }  
} 
    

Шаг 5. Код авторизации

Наконец, вернитесь к форме и добавьте следующий код:

        using System;  
using System.Collections.Generic;  
using System.ComponentModel;  
using System.Data;  
using System.Drawing;  
using System.Linq;  
using System.Text;  
using System.Windows.Forms;  
using MySql.Data.MySqlClient;namespace Connection_DB  
{  
    public partial class Form1 : Form  
    {  
        connection con = new connection();  
        string id, username, password, firstname, lastname, address;  
        public Form1()  
        {  
            InitializeComponent();  
        }        private void btnLogin_Click(object sender, EventArgs e)  
        {  
            try  
            {                if (txtUsername.Text != "" && txtPassword.Text != "")  
                {  
                      
                    con.Open();  
                    string query = "select id,username,password,firstname,lastname,address from user WHERE username ='" + txtUsername.Text + "' AND password ='" + txtPassword.Text + "'";  
                    MySqlDataReader row;  
                    row = con.ExecuteReader(query);  
                    if (row.HasRows)  
                    {  
                        while (row.Read())  
                        {  
                            id = row["id"].ToString();  
                            username = row["username"].ToString();  
                            password = row["password"].ToString();  
                            firstname = row["firstname"].ToString();  
                            lastname = row["lastname"].ToString();  
                            address = row["address"].ToString();  
                        }                        MessageBox.Show("Data found your name is " + firstname + " " + lastname + " " + " and your address at " + address);  
                    }  
                    else  
                    {  
                        MessageBox.Show("Data not found", "Information");  
                    }  
                }  
                else  
                {  
                    MessageBox.Show("Username or Password is empty", "Information");  
                }  
            }  
            catch  
            {  
                MessageBox.Show("Connection Error", "Information");  
            }            
        }  
    }  
} 
    

Результат

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

Интерфейс работающей программы
Интерфейс работающей программы

Исходный код этой простой формы авторизации вы найдете на Github.

***

У нас есть много полезных материалов по C# для начинающих:

Больше полезной информации вы можете найти на нашем телеграм-канале «Библиотека шарписта».

Источники

МЕРОПРИЯТИЯ

Комментарии

ВАКАНСИИ

Добавить вакансию
Java Team Lead
Москва, по итогам собеседования
Senior Java Developer
Москва, по итогам собеседования

ЛУЧШИЕ СТАТЬИ ПО ТЕМЕ