Слайд 2
![](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/590079/slide-1.jpg)
Слайд 3
![](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/590079/slide-2.jpg)
Слайд 4
![Состав кода using System; using System.Collections.Generic; using System.ComponentModel; using System.Data;](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/590079/slide-3.jpg)
Состав кода
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using
System.Windows.Forms;
Слайд 5
![public partial class LogIn : Form string admin = "";](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/590079/slide-4.jpg)
public partial class LogIn : Form
string admin = "";
bool reg
= false;
string userPass = "";
string userLogin = "";
static string serverName = @"DESKTOP-442HBLD\SQLEXPRESS";
static string dbName = “test";
SqlConnection con = new SqlConnection($@"Data Source={serverName};Initial Catalog={dbName};Integrated Security=True");
Слайд 6
![bool reg = false; Ключевое слово типа bool — это](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/590079/slide-5.jpg)
bool reg = false;
Ключевое слово типа bool — это псевдоним для
типа структуры System.Boolean .NET, представляющий логическое значение: true или false.
Для выполнения логических операций со значениями типа bool используйте логические операторы. Тип bool является типом результата операторов сравнения и равенства. Выражение bool может быть управляющим условным выражением в операторах if, do, while и for и условном операторе
Слайд 7
![public LogIn() { InitializeComponent(); passBox.PasswordChar = '•'; }](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/590079/slide-6.jpg)
public LogIn()
{
InitializeComponent();
passBox.PasswordChar = '•';
}
Слайд 8
![public LogIn(bool reg) { InitializeComponent(); passBox.PasswordChar = '•'; this.reg = reg; regFormLoad(); }](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/590079/slide-7.jpg)
public LogIn(bool reg)
{
InitializeComponent();
passBox.PasswordChar = '•';
this.reg = reg;
regFormLoad();
}
Слайд 9
![public LogIn(string admin) { InitializeComponent(); passBox.PasswordChar = '•'; this.admin = admin; regFormLoad();](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/590079/slide-8.jpg)
public LogIn(string admin)
{
InitializeComponent();
passBox.PasswordChar = '•';
this.admin = admin;
regFormLoad();
Слайд 10
![private void regFormLoad() { regButtonLabel.Hide(); label1.Text = "Регистрация"; label1.Location =](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/590079/slide-9.jpg)
private void regFormLoad()
{
regButtonLabel.Hide();
label1.Text = "Регистрация";
label1.Location = new
Point(70, 9);
button1.Text = "Зарегистрировать";
button1.Location = new Point(40, 176);
Слайд 11
![private void button1_Click(object sender, EventArgs e) { userLogin = loginBox.Text;](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/590079/slide-10.jpg)
private void button1_Click(object sender, EventArgs e)
{
userLogin = loginBox.Text;
userPass
= passBox.Text;
if (userPass == "" || userLogin == "")
{
MessageBox.Show("Пожалуйста, введите логин/пароль", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
return;
}
if (reg)
registration();
else
login();
}
Слайд 12
![private void registration() { SqlDataAdapter adapter = new SqlDataAdapter(); DataTable](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/590079/slide-11.jpg)
private void registration()
{
SqlDataAdapter adapter = new SqlDataAdapter();
DataTable table
= new DataTable();
string query = $"select ID, логин, пароль from пользователи where логин='{userLogin}'";
SqlCommand command = new SqlCommand(query, con);
adapter.SelectCommand = command;
adapter.Fill(table);
con.Open();
Слайд 13
![SqlCommand – объект подключаемой части технологии ADO.NET, позволяющий выполнять инструкции](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/590079/slide-12.jpg)
SqlCommand – объект подключаемой части технологии ADO.NET, позволяющий выполнять инструкции T-SQL
над источником данных. Для правильной работы объекту SqlCommand нужно предоставить подключение к источнику данных(экземпляр класса SqlConnection)
Слайд 14
![Свойство SelectCommand Свойство SelectCommand SqlDataAdapter представляет объект Command, отвечающий за](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/590079/slide-13.jpg)
Свойство SelectCommand
Свойство SelectCommand SqlDataAdapter представляет объект Command, отвечающий за извлечение данных
из источника данных. Для заполнения набора данных результатами, полученными с помощью команды SelectCommand, используется метод Fill адаптера данных. Метод Fill принимает аргументы, такие как набор данных, который нужно заполнить, и объект DataTable (или имя DataTable), который нужно заполнить строками, возвращаемыми из SelectCommand.
Слайд 15
![if (table.Rows.Count == 0) { SqlCommand insertCommand = new SqlCommand($"insert](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/590079/slide-14.jpg)
if (table.Rows.Count == 0)
{
SqlCommand insertCommand = new SqlCommand($"insert into
пользователи (логин,пароль) values('{userLogin}','{userPass}')", con);
if (insertCommand.ExecuteNonQuery() == 1)
MessageBox.Show("Регистрация прошла успешно!", "Успешно", MessageBoxButtons.OK, MessageBoxIcon.Information);
this.Hide();
}
else
{
MessageBox.Show("Такой логин уже существует", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
con.Close();
}
Слайд 16
![private void login() { SqlDataAdapter adapter = new SqlDataAdapter(); DataTable](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/590079/slide-15.jpg)
private void login()
{
SqlDataAdapter adapter = new SqlDataAdapter();
DataTable table
= new DataTable();
string query = $"select id, логин, пароль from пользователи where логин='{userLogin}' and пароль='{userPass}'";
SqlCommand command = new SqlCommand(query, con);
adapter.SelectCommand = command;
adapter.Fill(table);
Слайд 17
![if (table.Rows.Count == 1) { MessageBox.Show("Вы успешно вошли!", "Успешно", MessageBoxButtons.OK,](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/590079/slide-16.jpg)
if (table.Rows.Count == 1)
{
MessageBox.Show("Вы успешно вошли!", "Успешно", MessageBoxButtons.OK, MessageBoxIcon.Information);
if (userLogin == "admin")
admin = "true";
else
admin = "false";
con.Open();
SqlDataReader reader = command.ExecuteReader();
int userId = -1;
while (reader.Read())
{
userId = reader.GetInt32(0);
}
reader.Close();
MainForm mf = new MainForm(con, userLogin, userId, admin);