C#: создание формы подключения (входа) к бд ms sql
Можно сделать так: вот у Вас есть форма. На ней есть текстовые поля, в которые пользователь вводит свои логин и пароль. Пусть это tbLogin и tbPassword.
Также, допустим, у нас есть кнопка, которая вызывает процедуру проверки подключения.
Для подключения к БД используется так называемая connection string, куда мы поместим эти данные.
Тогда код, который будет выполнять проверку (для MS SQL Server), может быть примерно таким:
private void Button1_Click(object sender, EventArgs e) { string connectionString = $"Provider=SQLOLEDB.1;Password={tbPassword.Text};Persist Security Info=True;User ID={tbLogin.Text};Initial Catalog=FsaRobot;Data Source=192.168.0.25"; using (SqlConnection cn = new SqlConnection(connectionString)) { try { cn.Open(); MessageBox.Show("Connected!"); } catch(Exception ex) { MessageBox.Show($"Not connected, error: {ex.Message}"); } } }Теперь немного расширим наш сценарий.
Пускай у нас будет «форма проверки логина — пароля» и «главная форма».
Главная форма должна запускаться только в том случае, если проверка прошла успешно.
я бы написал такой код следующим образом.
Программы .NET WinForms обычно стартуют из static main() примерно так:
using System; using System.Windows.Forms; namespace DbExample { static class Program { /// <summary> /// The main entry point for the application. /// </summary> [STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new Form1()); } } }Здесь главное — то, что создаётся экземпляр формы Form1 и передаётся в метод Application.Run()
Сделаем, чтобы последовательно создавались две формы, форма логина и главная. В форму логина добавим публичное поле LoginSuccess. И будем в процессе создания форм его проверять:
using System; using System.Windows.Forms; namespace DbExample { static class Program { /// <summary> /// The main entry point for the application. /// </summary> [STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); FLogin fl = new FLogin(); Application.Run(fl); if (fl.LoginSuccess){ FMain fMain = new FMain(); Application.Run(fMain); } else{ MessageBox.Show("Извините, проверка логина-пароля неудачна"); } } } }Тогда FMain запустится только в случае удачной проверки логина — пароля.
Саму проверку можно организовать, чуть чуть поменяв первоначальный код под button1 в форме логина:
public bool LoginSuccess=false; private void Button1_Click(object sender, EventArgs e) { string connectionString = $"Provider=SQLOLEDB.1;Password={tbPassword.Text};Persist Security Info=True;User ID={tbLogin.Text};Initial Catalog=FsaRobot;Data Source=192.168.0.25"; using (SqlConnection cn = new SqlConnection(connectionString)) { try { cn.Open(); LoginSuccess = true; } catch(Exception ex) { MessageBox.Show($"Not connected, error: {ex.Message}"); } } Close(); }Конечно, здесь код немного упрощен, например, нет обработки ошибок.
(Если у кого то есть критика этого способа — модете написать в комментариях.)
Авторизация c# mysql., разделение пользователей!?
Представим, что у тебя есть таблица
user
В этой таблице
следующие колонки
:
Тогда на кнопку входа вешаешь событие клик и в ней пишешь следующий код:
string connStr = "server=localhost; port=3306; username=root; password= root; database=bd;";
string sql = "SELECT * FROM `user` WHERE `Name` = @un and `Password`= @up";
MySqlConnection conn = new MySqlConnection(connStr);
conn.Open();
DataTable table = new DataTable();
MySqlDataAdapter adapter = new MySqlDataAdapter();
MySqlCommand command = new MySqlCommand(sql, conn);
command.Parameters.Add("@un", MySqlDbType.VarChar, 25);
command.Parameters.Add("@up", MySqlDbType.VarChar, 25);
command.Parameters["@un"].Value = TextBox1.Text;
command.Parameters["@up"].Value = TextBox2.Text
adapter.SelectCommand = command;
adapter.Fill(table);
if (table.Rows.Count > 0)
{ userRole(); // метод, который будет открывать разные формы в зависимости от пользователя
}
conn.Close();Далее мы создаем новый метод, который называем userRole
string UserName = TextBox1.Text;;
string connStr = "server=localhost; port=3306; username=root; password= root; database=bd;";
string sql = "SELECT User_Role FROM `user` WHERE `Name` = @un";
MySqlConnection conn = new MySqlConnection(connStr);
conn.Open();
MySqlParameter nameParam = new MySqlParameter("@un", UserName); MySqlCommand command = new MySqlCommand(sql, conn); command.Parameters.Add(nameParam);
string Form_Role = command.ExecuteScalar().ToString();
Switch(Form_Role)
{
case "Администратор": Form.ActiveForm.Close(); Form1 f1 = new Form1(); f1.Show(); break;
default: Form.ActiveForm.Close(); Form2 f2 = new Form2(); f2.Show();
}
conn.Close();Надо учитывать, что
имя пользователя должно быть индивидуальным
.
Код я не тестировал, но должен заработать. В крайнем случае ты должен понять в каком направлении двигаться.
Если более опытные коллеги нашли какой-то недочет, то поправьте меня.
П.С. Надеюсь, что помог.
Настраиваем соединение с базой данных
Чтобы настроить соединение с базой данных, нужно будет создать специальный класс, например, «link». Вот как это можно реализовать:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using MySql.Data.MySqlClient;
using System.Windows.Forms;
using System.Data;namespace Link_DB
class link
MySql.Data.MySqlClient.MySqlLink conn;
string myLinkString;
https://www.youtube.com/watch?v=tjqBKY6L6rg
static string host = «localhost»;
static string database = «dbtest»;
Реализуем код авторизации
Возвращаемся к созданной форме и добавляем следующий код:
using System;
using System.Collections.Generic;
Создаем базу данных
Если у вас есть база данных — это хорошо; если нет, то давайте создадим новую «dbtest», где будем сохранять информацию о клиентах приложения. Внутри базы данных нужно будет создать таблицу «client» и определить ей следующие поля:
«id»(INT), добавив атрибут «AUTO_INCREMENT»;
«name»(VARCHAR(100));
«title»(VARCHAR(100));
«address»(VARCHAR(100)).
Создаем интерфейс формы
На этом шаге необходимо будет создать внешний вид вашей будущей формы авторизации. Представим, что в ней будет кнопка авторизации и 2 обязательных поля:
Создаем проект
Чтобы создать проект в Visual Studio, необходимо:
открыть меню по пути «Файл-Новый-Проект»;
по этому пути вам откроется окошко с новым проектом, где нужно будет заполнить пункты «Name», «Location», «Solution name».
Заключение
Теперь вы знаете, как можно сделать авторизацию в С. Помните, что это всего лишь один подход из десятков.
Вход в личный кабинет