Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
UTS-32_IOSU_Guguchkin_A_8.docx
Скачиваний:
1
Добавлен:
08.03.2023
Размер:
604.64 Кб
Скачать

Минобрнауки россии

Федеральное государственное автономное образовательное учреждение высшего образования

«Национальный исследовательский университет

«Московский институт электронной техники»

Направление

27.03.04 «Управление в технических системах»

Дисциплина

Информационное обеспечение систем управления

Пояснительная запискa к лабораторной работе №8

«Программный вызов

пользовательских запросов к БД»

Выполнил

Студент гр.УТС-32

Гугучкин А.А.

(подпись)

Проверил

Свиридов А.Н.

(подпись)

Цель: изучить основы организации БД в СУБД Access и способы программного вызова пользовательских запросов из БД под управлением СУБД Access из приложений .NET.

Ход работы:

Задание 1

Результат запроса к MSysObjects

Поля в MSysObjects:

Connect

Поле МЕМО

Database

Поле МЕМО

DateCreate

Дата/время

DateUpdate

Дата/время

Flags

Числовой

ForeignName

Текстовый (255)

Id

Числовой (Long Int)

Lv

Поле объекта OLE

LvExtra

Поле объекта OLE

LvModule

Поле объекта OLE

LvProp

Поле объекта OLE

Name

Текстовый (255)

Owner

Двоичный (255)

ParentId

Числовой (Long Int) Prim.key

RmtInfoLong

Поле объекта OLE

RmtInfoShort

Двоичный (255)

Type

Числовой (Integer)

Тип объекта БД

Значение поля Type

«Родные» таблицы

1

Глобальные «семейства» объектов

3

Запросы

5

Прилинкованные таблицы

6

Формы

-32768

Отчеты

-32764

Макросы

-32766

Модули

-32761

Название служебной таблицы Access

Назначение

MSysACEs

Права доступа к объектам в базе

MSysCmdbars

Содержит сведения о пользовательских панелях инструментов текущей базы данных

MSysRelationships

Содержит сведения об отношениях таблиц

MSysQueries

Содержит разбитые на поля запросы

MSysObjects

Cодержит информацию обо всех объектах базы данных

Задание 2

Запросы в Access:

Вывод: Я изучил основы организации БД в СУБД Access и способы программного вызова пользовательских запросов из БД под управлением СУБД Access из приложений .NET.

Графический интерфейс программы:

Код программы:

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

using System.Data.OleDb;

namespace LR8

{

public partial class Form1 : Form

{

int rb = 0; // перменная содержит ифнормацию о текущей таблице в работе

OleDbConnection cn = new OleDbConnection(

@"Provider = Microsoft.ACE.OLEDB.12.0;" +

@"Data Source = C:\Users\Celestial_Shepherd\Desktop\Lab_3(1).accdb;" +

@"Jet OLEDB:Create System Database=true;" +

@"Jet OLEDB:System database=C:\Users\anton\AppData\Roaming\Microsoft\Access\System.mdw"

);

OleDbCommand cmd = new OleDbCommand();

public Form1()

{

InitializeComponent();

radioButton1.Checked = true;

textBox1.Enabled = false;

textBox2.Enabled = true;

textBox3.Enabled = true;

textBox4.Enabled = true;

textBox5.Enabled = true;

textBox6.Enabled = true;

textBox7.Enabled = false;

textBox8.Enabled = false;

label1.Text = "Табельный номер врача";

label2.Text = "Номер лечебного учреждения";

label3.Text = "Фамилия";

label4.Text = "Имя";

label5.Text = "Отчество";

label6.Text = "Специальность";

label7.Text = "";

label8.Text = "";

label9.Text = "Фамилия";

}

private void Form1_Load(object sender, EventArgs e)

{

// установка связи между объектом отправки SQL-запросов и

// соединением

cmd.Connection = cn;

}

private void radioButton1_CheckedChanged(object sender, EventArgs e) // врач

{

rb = 0;

textBox1.Enabled = false;

textBox2.Enabled = true;

textBox3.Enabled = true;

textBox4.Enabled = true;

textBox5.Enabled = true;

textBox6.Enabled = true;

textBox7.Enabled = false;

textBox8.Enabled = false;

label1.Text = "Табельный номер врача";

label2.Text = "Номер лечебного учреждения";

label3.Text = "Фамилия";

label4.Text = "Имя";

label5.Text = "Отчество";

label6.Text = "Специальность";

label7.Text = "";

label8.Text = "";

label9.Text = "Фамилия";

}

private void radioButton2_CheckedChanged(object sender, EventArgs e) // диагноз

{

rb = 1;

textBox1.Enabled = false;

textBox2.Enabled = true;

textBox3.Enabled = true;

textBox4.Enabled = false;

textBox5.Enabled = false;

textBox6.Enabled = false;

textBox7.Enabled = false;

textBox8.Enabled = false;

label1.Text = "Идентификатор диагноза";

label2.Text = "Описание диагноза";

label3.Text = "Лечение";

label4.Text = "";

label5.Text = "";

label6.Text = "";

label7.Text = "";

label8.Text = "";

label9.Text = "Описание диагноза";

}

private void radioButton3_CheckedChanged(object sender, EventArgs e) // лечебное учреждение

{

rb = 2;

textBox1.Enabled = false;

textBox2.Enabled = true;

textBox3.Enabled = true;

textBox4.Enabled = true;

textBox5.Enabled = false;

textBox6.Enabled = false;

textBox7.Enabled = false;

textBox8.Enabled = false;

label1.Text = "Номер лечебного заведения";

label2.Text = "Тип лечебного учреждения";

label3.Text = "Специализация лечебного заведения";

label4.Text = "Адрес";

label5.Text = "";

label6.Text = "";

label7.Text = "";

label8.Text = "";

label9.Text = "Адрес";

}

private void radioButton4_CheckedChanged(object sender, EventArgs e) // пациент

{

rb = 3;

textBox1.Enabled = false;

textBox2.Enabled = true;

textBox3.Enabled = true;

textBox4.Enabled = true;

textBox5.Enabled = true;

textBox6.Enabled = true;

textBox7.Enabled = false;

textBox8.Enabled = false;

label1.Text = "Номер страхового";

label2.Text = "Фамилия";

label3.Text = "Имя";

label4.Text = "Отчество";

label5.Text = "Дата рождения";

label6.Text = "Адрес";

label7.Text = "";

label8.Text = "";

label9.Text = "Фамилия";

}

private void radioButton5_CheckedChanged(object sender, EventArgs e) //прием

{

rb = 4;

textBox1.Enabled = false;

textBox2.Enabled = true;

textBox3.Enabled = true;

textBox4.Enabled = true;

textBox5.Enabled = true;

textBox6.Enabled = true;

textBox7.Enabled = true;

textBox8.Enabled = true;

label1.Text = "Номер приема";

label2.Text = "Табельный номер врача";

label3.Text = "Дата приема";

label4.Text = "Время приема";

label5.Text = "Номер кабинета";

label6.Text = "Номер страхового полиса";

label7.Text = "Номер процедуры";

label8.Text = "Идентификатор диагноза";

label9.Text = "Номер приема";

}

private void radioButton6_CheckedChanged(object sender, EventArgs e) // процедура

{

rb = 5;

textBox1.Enabled = false;

textBox2.Enabled = true;

textBox3.Enabled = true;

textBox4.Enabled = true;

textBox5.Enabled = false;

textBox6.Enabled = false;

textBox7.Enabled = false;

textBox8.Enabled = false;

label1.Text = "Номер процедуры";

label2.Text = "Название";

label3.Text = "Длительность";

label4.Text = "Цена";

label5.Text = "";

label6.Text = "";

label7.Text = "";

label8.Text = "";

label9.Text = "Название";

}

private void button1_Click(object sender, EventArgs e) // открыть

{

cn.Open(); // установка соединения

try

{

// очистка содержимого компонента listBox1

listBox1.Items.Clear();

if (rb == 0)

cmd.CommandText = "SELECT * FROM Врач";

else if (rb == 1)

cmd.CommandText = "SELECT * FROM Диагноз";

else if (rb == 2)

cmd.CommandText = "SELECT * FROM [Лечебное учреждение]";

else if (rb == 3)

cmd.CommandText = "SELECT * FROM Пациент";

else if (rb == 4)

cmd.CommandText = "SELECT * FROM Прием";

else

cmd.CommandText = "SELECT * FROM Процедура";

// попытка выполнить запрос,

// доступ к его результату будет осуществляться

// при помощи объекта rd

OleDbDataReader rd = cmd.ExecuteReader();

// если запрос вернул результат

if (rd.HasRows)

{

while (rd.Read())

{

if (rb == 0)

{

listBox1.Items.Add(rd[0].ToString() + " | " + rd[1].ToString() + " | " + rd[2].ToString() + " | " + rd[3].ToString() + " | " + rd[4].ToString() + " | " + rd[5].ToString());

}

else if (rb == 1)

{

listBox1.Items.Add(rd[0].ToString() + " | " + rd[1].ToString() + " | " + rd[2].ToString());

}

else if (rb == 2)

{

listBox1.Items.Add(rd[0].ToString() + " | " + rd[1].ToString() + " | " + rd[2].ToString() + " | " + rd[3].ToString());

}

else if (rb == 3)

{

listBox1.Items.Add(rd[0].ToString() + " | " + rd[1].ToString() + " | " + rd[2].ToString() + " | " + rd[3].ToString() + " | " + rd[4].ToString() + " | " + rd[5].ToString());

}

else if (rb == 4)

{

listBox1.Items.Add(rd[0].ToString() + " | " + rd[1].ToString() + " | " + rd[2].ToString() + " | " + rd[3].ToString() + " | " + rd[4].ToString() + " | " + rd[5].ToString() + " | " + rd[6].ToString() + " | " + rd[7].ToString());

}

else

{

listBox1.Items.Add(rd[0].ToString() + " | " + rd[1].ToString() + " | " + rd[2].ToString() + " | " + rd[3].ToString());

}

}

}

}

finally

{

cn.Close(); // закрытие соединения с БД

}

}

private void button2_Click(object sender, EventArgs e) // добавить

{

cn.Open();

try

{

if (rb == 0)

{

cmd.CommandText =

"INSERT INTO Врач ([Номер лечебного учреждения], Фамилия, Имя, Отчество, Специальность) VALUES ('"

+ textBox2.Text + "','"

+ textBox3.Text + "','"

+ textBox4.Text + "','"

+ textBox5.Text + "','"

+ textBox6.Text + "')";

cmd.ExecuteNonQuery();

cmd.Clone();

}

else if (rb == 1)

{

cmd.CommandText =

"INSERT INTO Диагноз ([Описание диагноза], Лечение) VALUES ('"

+ textBox2.Text + "','"

+ textBox3.Text + "')";

cmd.ExecuteNonQuery();

cmd.Clone();

}

else if (rb == 2)

{

cmd.CommandText =

"INSERT INTO [Лечебное учреждение] ([Тип лечебного учреждения], [Специализация лечебного заведения], Адрес) VALUES ('"

+ textBox2.Text + "','"

+ textBox3.Text + "','"

+ textBox4.Text + "')";

cmd.ExecuteNonQuery();

cmd.Clone();

}

else if (rb == 3)

{

cmd.CommandText =

"INSERT INTO Пациент ( Фамилия, Имя, Отчество, [Дата рождения], Адрес) VALUES ('"

+ textBox2.Text + "','"

+ textBox3.Text + "','"

+ textBox4.Text + "','"

+ textBox5.Text + "','"

+ textBox6.Text + "')";

cmd.ExecuteNonQuery();

cmd.Clone();

}

else if (rb == 4)

{

cmd.CommandText =

"INSERT INTO Прием ([Табельный номер врача], [Дата приема], [Время приема], [Номер кабинета], [Номер страхового полиса], [Номер процедуры], [Идентификатор диагноза]) " +

"VALUES ('"

+ textBox2.Text + "','"

+ textBox3.Text + "','"

+ textBox4.Text + "','"

+ textBox5.Text + "','"

+ textBox6.Text + "','"

+ textBox7.Text + "','"

+ textBox8.Text + "')";

cmd.ExecuteNonQuery();

cmd.Clone();

}

else

{

cmd.CommandText =

"INSERT INTO Процедура (Название, Длительность, Цена) VALUES ('"

+ textBox2.Text + "','"

+ textBox3.Text + "','"

+ textBox4.Text + "')";

cmd.ExecuteNonQuery();

cmd.Clone();

}

}

finally

{

cn.Close();

textBox1.Text = "";

textBox2.Text = "";

textBox3.Text = "";

textBox4.Text = "";

textBox5.Text = "";

textBox6.Text = "";

textBox7.Text = "";

textBox8.Text = "";

}

}

private void button3_Click(object sender, EventArgs e) // удалить

{

cn.Open();

try

{

if (rb == 0)

{

cmd.CommandText = "DELETE * FROM Врач WHERE Фамилия ='"

+ textBox9.Text + "'";

cmd.ExecuteNonQuery();

cmd.Clone();

}

else if (rb == 1)

{

cmd.CommandText = "DELETE * FROM Диагноз WHERE [Описание диагноза] ='"

+ textBox9.Text + "'";

cmd.ExecuteNonQuery();

cmd.Clone();

}

else if (rb == 2)

{

cmd.CommandText = "DELETE * FROM [Лечебное учреждение] WHERE Адрес ='"

+ textBox9.Text + "'";

cmd.ExecuteNonQuery();

cmd.Clone();

}

else if (rb == 3)

{

cmd.CommandText = "DELETE * FROM Пациент WHERE Фамилия ='"

+ textBox9.Text + "'";

cmd.ExecuteNonQuery();

cmd.Clone();

}

else if (rb == 4)

{

cmd.CommandText = "DELETE * FROM Прием WHERE [Номер приема] ='"

+ textBox9.Text + "'";

cmd.ExecuteNonQuery();

cmd.Clone();

}

else

{

cmd.CommandText = "DELETE * FROM Процедура WHERE Название ='"

+ textBox9.Text + "'";

cmd.ExecuteNonQuery();

cmd.Clone();

}

}

finally

{

cn.Close();

textBox9.Text = "";

}

}

private void button4_Click(object sender, EventArgs e) // з1

{

cn.Open(); // установка соединения

try

{

listBox1.Items.Clear();

cmd.CommandText = "SELECT * FROM Запрос1";

OleDbDataReader rd = cmd.ExecuteReader();