Лабораторная работа 7 по базам данных

advertisement
Лабораторная работа № 7
Тема: «Реализация запросов средствами ADO.NET»
Реализуем в приложении для вкладки Экзамены следующие возможности:
1. по нажатию на кнопку Добавить запись – открывается окно с полями для ввода
новых значений.
2. Значение номера зачетки выбирается из поля со списком, в котором
отображается данные, выбранные в объект DataTable Stud.
Для реализации первой возможности необходимо добавить в проект форму Project –
Add Form в открывшемся окне выберите Windows Form и назовите InsertExam.
Расположите на форме следующие объекты:
Объект Label для вывода надписей: № зачетки, Предмет, Оценка, Дата сдачи.
Для этого свойству Text объекта Label присвойте соответствующие названия.
Для ввода номера зачетки перетащите объект – ComboBox.
Отображаться в списке будут данные из таблицы Студенты, а добавляться в таблицу
будут числовые значения NumZac:
Name
cmbNumZac
Для отображения даты сдачи вставьте объект с панели Toolbox – DateTimePicker.
Измените свойства:
Name
dateSD
MinDate
1.01.1960
Для поля оценка вставьте объект ComboBox - cmbOcenka, нажав на треугольник в
правом верхнем углу, выберите Edit Items.
Введите значения и нажмите ОК.
Добавьте объекты TextBox для ввода значений: предмет и ФИО экзаменатора, с
именами txtPredmet, txtFIOprep.
Добавьте кнопки со свойствами:
Name
butInsert
Text
ОК
Name
butClose
Text
Закрыть
Для отображения выборочных данных из таблицы Students:
Добавить using System.Data.OleDb; в программный код формы InsertExam
Изменить программный код следующим образом:
public partial class InsertExam : Form
{
OleDbDataReader rdr;
OleDbConnection con;
OleDbCommand cmd;
string InstConnectString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=D:\Институт_Петров.mdb";
public InsertExam()
{
InitializeComponent();
con = new OleDbConnection(InstConnectString);
con.Open();
// Испольуем метод CreateCommand для создания команды
cmd = con.CreateCommand();
cmd.CommandText = "Select Select №зачетки,Фамилия,Имя,Группа From Студенты";
//выполняем команду SQL
rdr = cmd.ExecuteReader();
// производим чтение из массива данных
while (rdr.Read())
{
string tmp = ""; //для каждого нового пункта списка очищаем
for (int i = 0; i < 4; i++)
{ if (tmp != "")// если в массиве данных есть значения
tmp += " ";
tmp += rdr[i].ToString(); //формируем пункт поля со списком
}
cmbNumZac.Items.Add(tmp);//добавляем пункт списка к объекту
}
}
Дважды щелкнете по объекту cmbOcenka и введите следующий программный код:
private void cmbNumZac_SelectedIndexChanged(object sender, EventArgs e)
{
string res = cmbNumZac.SelectedItem.ToString();//считываем в переменную
//выделенный пункт списка
cmbNumZac.ValueMember = res.Substring(0, 6); //вводимое в таблицу значениеэто первые 6 символов пункта списка, которые соответсвуют шестизначному
номеру зачетки
}
Дважды щелкнув по кнопке ОК, введите следующий программный код:
if(InsCmd.ExecuteNonQuery()==1)//если запрос написан без ошибок, значит он
будет выполнен методом ExecuteNonQuery и вернет значение true или 1.
MessageBox.Show("Сведения успешно добавлены", "Добавление",
MessageBoxButtons.OK);
DataTable Exam = new DataTable("Экзамены");
OleDbDataAdapter datAdapExam = new OleDbDataAdapter("SELECT * FROM
Экзамены",con);
datAdapExam.Fill(Exam);
Дважды щелкнув по кнопке Закрыть, введите следующий программный код:
Реализуем программный код для кнопки вкладки Экзамены Добавить запись, дважды
щелкнув, введите:
InsertExam InsExam = new InsertExam();
InsExam.Show();
//очищаем строки перед загрузкой обновленных значений таблицы
Exam.Rows.Clear();
Download