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;
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».
Заключение
Теперь вы знаете, как можно сделать авторизацию в С. Помните, что это всего лишь один подход из десятков.