Минобрнауки россии
Федеральное государственное автономное образовательное учреждение высшего образования
«Национальный исследовательский университет
«Московский институт электронной техники»
Направление |
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();