Сделал подсчет времени для сложных запросов в 5 лабе
This commit is contained in:
parent
0bdd4f8f99
commit
42dd04d966
@ -0,0 +1,9 @@
|
||||
namespace ElectronicDiaryAbstractions.WorkAbstractions
|
||||
{
|
||||
public interface IComplexQueriesWork
|
||||
{
|
||||
void ExecuteFirstQuery();
|
||||
|
||||
void ExecuteSecondQuery();
|
||||
}
|
||||
}
|
@ -0,0 +1,24 @@
|
||||
using ElectronicDiaryAbstractions.WorkAbstractions;
|
||||
using Npgsql;
|
||||
|
||||
namespace ElectronicDiaryPostgresImplementation.WorkImplementation
|
||||
{
|
||||
public class ComplexQueriesWork : IComplexQueriesWork
|
||||
{
|
||||
public void ExecuteFirstQuery()
|
||||
{
|
||||
using var con = SqlConnection.GetConnection();
|
||||
con.Open();
|
||||
using var cmd = new NpgsqlCommand("SELECT * FROM student JOIN lesson ON lesson.fk_student_id = student.student_id JOIN grade ON student.fk_grade_id = grade.grade_id JOIN user_info ON student.fk_user_id = user_info.user_id JOIN teacher ON grade.fk_teacher_id = teacher.teacher_id JOIN homework ON lesson.fk_homework_id = homework.homework_id JOIN mark ON lesson.fk_mark_id = mark.mark_id JOIN subject ON lesson.fk_subject_id = subject.subject_id JOIN teacher_subject ON teacher_subject.fk_teacher_id = teacher.teacher_id AND teacher_subject.fk_subject_id = subject.subject_id JOIN study_area ON lesson.fk_study_area_id = study_area.study_area_id JOIN subject_student ON subject_student.fk_student_id = student.student_id AND subject_student.fk_subject_id = subject.subject_id", con);
|
||||
cmd.ExecuteNonQuery();
|
||||
}
|
||||
|
||||
public void ExecuteSecondQuery()
|
||||
{
|
||||
using var con = SqlConnection.GetConnection();
|
||||
con.Open();
|
||||
using var cmd = new NpgsqlCommand("SELECT study_area.study_area_name, COUNT(lesson.lesson_id) AS total_lessons FROM lesson JOIN study_area ON lesson.fk_study_area_id = study_area.study_area_id GROUP BY study_area.study_area_name", con);
|
||||
cmd.ExecuteNonQuery();
|
||||
}
|
||||
}
|
||||
}
|
@ -44,16 +44,21 @@
|
||||
получение1000ЗаписейToolStripMenuItem = new ToolStripMenuItem();
|
||||
обновление1000ЗаписейToolStripMenuItem = new ToolStripMenuItem();
|
||||
удаление1000ЗаписейToolStripMenuItem = new ToolStripMenuItem();
|
||||
замерыСложныхЗапросовToolStripMenuItem = new ToolStripMenuItem();
|
||||
первыйЗапросToolStripMenuItem = new ToolStripMenuItem();
|
||||
второйЗапросToolStripMenuItem1 = new ToolStripMenuItem();
|
||||
labelTest = new Label();
|
||||
menuStrip1.SuspendLayout();
|
||||
SuspendLayout();
|
||||
//
|
||||
// menuStrip1
|
||||
//
|
||||
menuStrip1.Items.AddRange(new ToolStripItem[] { справочникиToolStripMenuItem, замерВремениToolStripMenuItem });
|
||||
menuStrip1.ImageScalingSize = new Size(20, 20);
|
||||
menuStrip1.Items.AddRange(new ToolStripItem[] { справочникиToolStripMenuItem, замерВремениToolStripMenuItem, замерыСложныхЗапросовToolStripMenuItem });
|
||||
menuStrip1.Location = new Point(0, 0);
|
||||
menuStrip1.Name = "menuStrip1";
|
||||
menuStrip1.Size = new Size(554, 24);
|
||||
menuStrip1.Padding = new Padding(7, 3, 0, 3);
|
||||
menuStrip1.Size = new Size(633, 30);
|
||||
menuStrip1.TabIndex = 0;
|
||||
menuStrip1.Text = "menuStrip1";
|
||||
//
|
||||
@ -61,69 +66,69 @@
|
||||
//
|
||||
справочникиToolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[] { предметыToolStripMenuItem, классыToolStripMenuItem, ученикиToolStripMenuItem, учителяToolStripMenuItem, домашниеЗаданияToolStripMenuItem, урокиToolStripMenuItem, оценкиToolStripMenuItem, пользователиToolStripMenuItem, учебныеПомещенияToolStripMenuItem });
|
||||
справочникиToolStripMenuItem.Name = "справочникиToolStripMenuItem";
|
||||
справочникиToolStripMenuItem.Size = new Size(94, 20);
|
||||
справочникиToolStripMenuItem.Size = new Size(117, 24);
|
||||
справочникиToolStripMenuItem.Text = "Справочники";
|
||||
//
|
||||
// предметыToolStripMenuItem
|
||||
//
|
||||
предметыToolStripMenuItem.Name = "предметыToolStripMenuItem";
|
||||
предметыToolStripMenuItem.Size = new Size(192, 22);
|
||||
предметыToolStripMenuItem.Size = new Size(241, 26);
|
||||
предметыToolStripMenuItem.Text = "Предметы";
|
||||
предметыToolStripMenuItem.Click += ПредметыToolStripMenuItem_Click;
|
||||
//
|
||||
// классыToolStripMenuItem
|
||||
//
|
||||
классыToolStripMenuItem.Name = "классыToolStripMenuItem";
|
||||
классыToolStripMenuItem.Size = new Size(192, 22);
|
||||
классыToolStripMenuItem.Size = new Size(241, 26);
|
||||
классыToolStripMenuItem.Text = "Классы";
|
||||
классыToolStripMenuItem.Click += КлассыToolStripMenuItem_Click;
|
||||
//
|
||||
// ученикиToolStripMenuItem
|
||||
//
|
||||
ученикиToolStripMenuItem.Name = "ученикиToolStripMenuItem";
|
||||
ученикиToolStripMenuItem.Size = new Size(192, 22);
|
||||
ученикиToolStripMenuItem.Size = new Size(241, 26);
|
||||
ученикиToolStripMenuItem.Text = "Ученики";
|
||||
ученикиToolStripMenuItem.Click += УченикиToolStripMenuItem_Click;
|
||||
//
|
||||
// учителяToolStripMenuItem
|
||||
//
|
||||
учителяToolStripMenuItem.Name = "учителяToolStripMenuItem";
|
||||
учителяToolStripMenuItem.Size = new Size(192, 22);
|
||||
учителяToolStripMenuItem.Size = new Size(241, 26);
|
||||
учителяToolStripMenuItem.Text = "Учителя";
|
||||
учителяToolStripMenuItem.Click += УчителяToolStripMenuItem_Click;
|
||||
//
|
||||
// домашниеЗаданияToolStripMenuItem
|
||||
//
|
||||
домашниеЗаданияToolStripMenuItem.Name = "домашниеЗаданияToolStripMenuItem";
|
||||
домашниеЗаданияToolStripMenuItem.Size = new Size(192, 22);
|
||||
домашниеЗаданияToolStripMenuItem.Size = new Size(241, 26);
|
||||
домашниеЗаданияToolStripMenuItem.Text = "Домашние задания";
|
||||
домашниеЗаданияToolStripMenuItem.Click += ДомашниеЗаданияToolStripMenuItem_Click;
|
||||
//
|
||||
// урокиToolStripMenuItem
|
||||
//
|
||||
урокиToolStripMenuItem.Name = "урокиToolStripMenuItem";
|
||||
урокиToolStripMenuItem.Size = new Size(192, 22);
|
||||
урокиToolStripMenuItem.Size = new Size(241, 26);
|
||||
урокиToolStripMenuItem.Text = "Уроки";
|
||||
урокиToolStripMenuItem.Click += УрокиToolStripMenuItem_Click;
|
||||
//
|
||||
// оценкиToolStripMenuItem
|
||||
//
|
||||
оценкиToolStripMenuItem.Name = "оценкиToolStripMenuItem";
|
||||
оценкиToolStripMenuItem.Size = new Size(192, 22);
|
||||
оценкиToolStripMenuItem.Size = new Size(241, 26);
|
||||
оценкиToolStripMenuItem.Text = "Оценки";
|
||||
оценкиToolStripMenuItem.Click += ОценкиToolStripMenuItem_Click;
|
||||
//
|
||||
// пользователиToolStripMenuItem
|
||||
//
|
||||
пользователиToolStripMenuItem.Name = "пользователиToolStripMenuItem";
|
||||
пользователиToolStripMenuItem.Size = new Size(192, 22);
|
||||
пользователиToolStripMenuItem.Size = new Size(241, 26);
|
||||
пользователиToolStripMenuItem.Text = "Пользователи";
|
||||
пользователиToolStripMenuItem.Click += ПользователиToolStripMenuItem_Click;
|
||||
//
|
||||
// учебныеПомещенияToolStripMenuItem
|
||||
//
|
||||
учебныеПомещенияToolStripMenuItem.Name = "учебныеПомещенияToolStripMenuItem";
|
||||
учебныеПомещенияToolStripMenuItem.Size = new Size(192, 22);
|
||||
учебныеПомещенияToolStripMenuItem.Size = new Size(241, 26);
|
||||
учебныеПомещенияToolStripMenuItem.Text = "Учебные помещения";
|
||||
учебныеПомещенияToolStripMenuItem.Click += УчебныеПомещенияToolStripMenuItem_Click;
|
||||
//
|
||||
@ -131,54 +136,76 @@
|
||||
//
|
||||
замерВремениToolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[] { добавление1000ЗаписейToolStripMenuItem, получение1000ЗаписейToolStripMenuItem, обновление1000ЗаписейToolStripMenuItem, удаление1000ЗаписейToolStripMenuItem });
|
||||
замерВремениToolStripMenuItem.Name = "замерВремениToolStripMenuItem";
|
||||
замерВремениToolStripMenuItem.Size = new Size(114, 20);
|
||||
замерВремениToolStripMenuItem.Size = new Size(144, 24);
|
||||
замерВремениToolStripMenuItem.Text = "Замеры времени";
|
||||
//
|
||||
// добавление1000ЗаписейToolStripMenuItem
|
||||
//
|
||||
добавление1000ЗаписейToolStripMenuItem.Name = "добавление1000ЗаписейToolStripMenuItem";
|
||||
добавление1000ЗаписейToolStripMenuItem.Size = new Size(217, 22);
|
||||
добавление1000ЗаписейToolStripMenuItem.Size = new Size(277, 26);
|
||||
добавление1000ЗаписейToolStripMenuItem.Text = "Добавление 1000 записей";
|
||||
добавление1000ЗаписейToolStripMenuItem.Click += Добавление1000ЗаписейToolStripMenuItem_Click;
|
||||
//
|
||||
// получение1000ЗаписейToolStripMenuItem
|
||||
//
|
||||
получение1000ЗаписейToolStripMenuItem.Name = "получение1000ЗаписейToolStripMenuItem";
|
||||
получение1000ЗаписейToolStripMenuItem.Size = new Size(217, 22);
|
||||
получение1000ЗаписейToolStripMenuItem.Size = new Size(277, 26);
|
||||
получение1000ЗаписейToolStripMenuItem.Text = "Получение 1000 записей";
|
||||
получение1000ЗаписейToolStripMenuItem.Click += Получение1000ЗаписейToolStripMenuItem_Click;
|
||||
//
|
||||
// обновление1000ЗаписейToolStripMenuItem
|
||||
//
|
||||
обновление1000ЗаписейToolStripMenuItem.Name = "обновление1000ЗаписейToolStripMenuItem";
|
||||
обновление1000ЗаписейToolStripMenuItem.Size = new Size(217, 22);
|
||||
обновление1000ЗаписейToolStripMenuItem.Size = new Size(277, 26);
|
||||
обновление1000ЗаписейToolStripMenuItem.Text = "Обновление 1000 записей";
|
||||
обновление1000ЗаписейToolStripMenuItem.Click += Обновление1000ЗаписейToolStripMenuItem_Click;
|
||||
//
|
||||
// удаление1000ЗаписейToolStripMenuItem
|
||||
//
|
||||
удаление1000ЗаписейToolStripMenuItem.Name = "удаление1000ЗаписейToolStripMenuItem";
|
||||
удаление1000ЗаписейToolStripMenuItem.Size = new Size(217, 22);
|
||||
удаление1000ЗаписейToolStripMenuItem.Size = new Size(277, 26);
|
||||
удаление1000ЗаписейToolStripMenuItem.Text = "Удаление 1000 записей";
|
||||
удаление1000ЗаписейToolStripMenuItem.Click += Удаление1000ЗаписейToolStripMenuItem_Click;
|
||||
//
|
||||
// замерыСложныхЗапросовToolStripMenuItem
|
||||
//
|
||||
замерыСложныхЗапросовToolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[] { первыйЗапросToolStripMenuItem, второйЗапросToolStripMenuItem1 });
|
||||
замерыСложныхЗапросовToolStripMenuItem.Name = "замерыСложныхЗапросовToolStripMenuItem";
|
||||
замерыСложныхЗапросовToolStripMenuItem.Size = new Size(214, 24);
|
||||
замерыСложныхЗапросовToolStripMenuItem.Text = "Замеры сложных запросов";
|
||||
//
|
||||
// первыйЗапросToolStripMenuItem
|
||||
//
|
||||
первыйЗапросToolStripMenuItem.Name = "первыйЗапросToolStripMenuItem";
|
||||
первыйЗапросToolStripMenuItem.Size = new Size(224, 26);
|
||||
первыйЗапросToolStripMenuItem.Text = "1 запрос";
|
||||
первыйЗапросToolStripMenuItem.Click += ПервыйЗапросToolStripMenuItem_Click;
|
||||
//
|
||||
// второйЗапросToolStripMenuItem1
|
||||
//
|
||||
второйЗапросToolStripMenuItem1.Name = "второйЗапросToolStripMenuItem1";
|
||||
второйЗапросToolStripMenuItem1.Size = new Size(224, 26);
|
||||
второйЗапросToolStripMenuItem1.Text = "2 запрос";
|
||||
второйЗапросToolStripMenuItem1.Click += ВторойЗапросToolStripMenuItem1_Click;
|
||||
//
|
||||
// labelTest
|
||||
//
|
||||
labelTest.BorderStyle = BorderStyle.FixedSingle;
|
||||
labelTest.Location = new Point(156, 82);
|
||||
labelTest.Location = new Point(178, 109);
|
||||
labelTest.Name = "labelTest";
|
||||
labelTest.Size = new Size(250, 100);
|
||||
labelTest.Size = new Size(285, 133);
|
||||
labelTest.TabIndex = 3;
|
||||
labelTest.TextAlign = ContentAlignment.MiddleCenter;
|
||||
//
|
||||
// FormMain
|
||||
//
|
||||
AutoScaleDimensions = new SizeF(7F, 15F);
|
||||
AutoScaleDimensions = new SizeF(8F, 20F);
|
||||
AutoScaleMode = AutoScaleMode.Font;
|
||||
ClientSize = new Size(554, 261);
|
||||
ClientSize = new Size(633, 348);
|
||||
Controls.Add(labelTest);
|
||||
Controls.Add(menuStrip1);
|
||||
MainMenuStrip = menuStrip1;
|
||||
Margin = new Padding(3, 4, 3, 4);
|
||||
Name = "FormMain";
|
||||
StartPosition = FormStartPosition.CenterScreen;
|
||||
Text = "Электронный дневник";
|
||||
@ -207,5 +234,8 @@
|
||||
private ToolStripMenuItem получение1000ЗаписейToolStripMenuItem;
|
||||
private ToolStripMenuItem обновление1000ЗаписейToolStripMenuItem;
|
||||
private ToolStripMenuItem удаление1000ЗаписейToolStripMenuItem;
|
||||
private ToolStripMenuItem замерыСложныхЗапросовToolStripMenuItem;
|
||||
private ToolStripMenuItem первыйЗапросToolStripMenuItem;
|
||||
private ToolStripMenuItem второйЗапросToolStripMenuItem1;
|
||||
}
|
||||
}
|
@ -1,11 +1,11 @@
|
||||
using ElectronicDiaryAbstractions.Models;
|
||||
using ElectronicDiaryAbstractions.WorkAbstractions;
|
||||
using ElectronicDiaryPostgresImplementation.WorkImplementation;
|
||||
|
||||
namespace ElectronicDiaryView
|
||||
{
|
||||
public partial class FormMain : Form
|
||||
{
|
||||
|
||||
public FormMain()
|
||||
{
|
||||
InitializeComponent();
|
||||
@ -165,5 +165,31 @@ namespace ElectronicDiaryView
|
||||
labelTest.Text = $"Удаление 1000 строк выполнено за {(endTime - startTime).TotalMilliseconds} миллисекунд";
|
||||
}
|
||||
}
|
||||
|
||||
private void ПервыйЗапросToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
var service = Program.ServiceProvider?.GetService(typeof(IComplexQueriesWork));
|
||||
if (service is IComplexQueriesWork work)
|
||||
{
|
||||
DateTime startTime = DateTime.Now;
|
||||
work.ExecuteFirstQuery();
|
||||
DateTime endTime = DateTime.Now;
|
||||
|
||||
labelTest.Text = $"Первый сложный запрос (вывод всех полей БД) выполнился за {(endTime - startTime).TotalMilliseconds} миллисекунд";
|
||||
}
|
||||
}
|
||||
|
||||
private void ВторойЗапросToolStripMenuItem1_Click(object sender, EventArgs e)
|
||||
{
|
||||
var service = Program.ServiceProvider?.GetService(typeof(IComplexQueriesWork));
|
||||
if (service is IComplexQueriesWork work)
|
||||
{
|
||||
DateTime startTime = DateTime.Now;
|
||||
work.ExecuteSecondQuery();
|
||||
DateTime endTime = DateTime.Now;
|
||||
|
||||
labelTest.Text = $"Второй сложный запрос (подсчет уроков по помещениям) выполнился за {(endTime - startTime).TotalMilliseconds} миллисекунд";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -33,6 +33,7 @@ namespace ElectronicDiaryView
|
||||
services.AddTransient<ISubjectWork, SubjectWork>();
|
||||
services.AddTransient<ITeacherWork, TeacherWork>();
|
||||
services.AddTransient<IUserWork, UserWork>();
|
||||
services.AddTransient<IComplexQueriesWork, ComplexQueriesWork>();
|
||||
services.AddTransient<FormMain>();
|
||||
services.AddTransient<FormGrade>();
|
||||
services.AddTransient<FormHomework>();
|
||||
|
Loading…
Reference in New Issue
Block a user