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

advertisement
Лабораторная работа
Тема: «Объекты ADO. Net»

Запустите интегрированную среду разработки приложений Visual Studio 2005.

Создайте новое приложение File -> New->Project -> Windows Application.

Назовите lab_rab6.
Создадим два подключения к базам данных Universitet.mdf и Институт_.mdb.
Для создания первого подключения воспользуемся мастером создания подключений.
Для этого в обозревателе серверов (Server explorer) щелкните правой кнопкой мыши
Подключения данных (Data Connection) и выберите команду Добавить подключение
(Add connection).
В появившемся окне выбрать Microsoft SQL Server Database File (для появления данного
окна нажмите на кнопкуChange). Нажмите на Browse и укажите созданный вами файл
базы данных в лабораторной работе № 5 - Universitet.mdf.
После выполнения выше изложенных шагов, перетащите из ToolBox на поле формы или
конструктора объект BindingSource.
В нижней части формы появится соответствующий значок, щелкните правой кнопкой
мыши по данному значку, выберите строку Properties. В открывшемся окне щелкните в
строке DataSource .
В открывшемся окне выберите Add Project data Source.
Затем выберите Database нажмите Next, укажите в строке путь к используемой базе
данных, обычно он записан по умолчанию и нажмите Next.
Далее необходимо выбрать объекты базы данных, которые войдут в объект DataSet.
И нажмите Finish.
В окне формы внизу появится значок
Создадим второе подключение вторым способом – программно. Для этого перейдите в
программный код формы Form1.cs. На панели Solution Explorer щелкните правой
клавишей на Form1.cs, выберите View Code.
Измените программный код следующим образом
using
using
using
using
using
using
using
using
System;
System.Collections.Generic;
System.ComponentModel;
System.Data;
System.Drawing;
System.Text;
System.Windows.Forms;
System.Data.OleDb;
namespace lab_rab6
{
public partial class Form1 : Form
{
string InstConnectString = "Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=" + @"D:\Институт_Петров.mdb";
OleDbConnection con;
public Form1()
{
InitializeComponent();
con = new OleDbConnection(InstConnectString);
con.Open();
} } }
Укажите путь к вашей базе данных Институт_.mdb.
Далее будем создавать форму следующего вида:
Вернитесь в дизайнер формы. Form1.cs [Design].
Добавьте с панели инструментов ToolBox объект TabControl и расположите его на
форме. В окне свойств (Properties) перейдите на строчку TabPages нажмите на
.В
окне tabPagesCollection Editor нажмите на кнопку ADD для добавления вкладок, измените
свойства Name и Text. Для вкладки Данные Name = tabData, Text = Данные, на второй
вкладке Студенты Name = tabStud, Text = Студенты, на третьей вкладке Name = tabExam,
Text = Экзамены, на четвертой вкладке Name = tabPrep, Text = Преподаватели.
На вкладке Данные добавьте следующие объекты с панели инструментов, изменив их
свойства:
Name
datGrid
Объект ComboBox
Name
cmbTable
Выберите свойство Items (Collection) и введите следующие пункты списка:
Добавьте кнопку (Button)
Name= butLoad, Text = «Загрузить данные».
Затем перейдите на вкладку Студенты и добавьте следующие объекты с панели
инструментов, изменив их свойства:
Name
dataGridStud
На вкладку Экзамены добавьте две кнопки:
Кнопка Добавить запись
Name
butInsExam
Text
Добавить запись
Кнопка Загрузить данные
Name
butUpdExam
Text
Загрузить данные
Реализуем следующие функции приложения:
1. Выбрав пункт меню и нажав кнопку Загрузить данные, в объекте dataGridView
отображаются данные выбранной таблицы.
Дважды щелкните по кнопке «Загрузить данные» и в обработчике введите следующий
код. А также добавьте объявление переменной OleDbDataAdapter datAdapTable;
перед public Form1().
2. Возможность отображения в объекте datGridStud не всех данных из таблицы
Студенты, а только №зачетки, фамилии, имени и группы.
Измените программный код класса public Form1() следующим образом:
Таким образом, для отображения выборочных данных в клиентском приложении
необходимо:
1. Создать соединение. OleDbConnection con = new
OleDbConnection(InstConnectString);
2. Открыть соединение.
3. Создать объект DataTable для помещения в него данных таблицы Студенты.
4. Создать адаптер данных, так как база данных создана в Access, используется
OleDBProvider, поэтому OleDbDataAdapter.Указать какие данные поместить в
адаптер, например как в данном случае в виде SQL –запроса и указать соединение.
5. Создать схему представления данных с помощью объектов DataColumn.
6. Заполнить объект Stud данными из адаптера DA.
7. Указать объекту dataGridView источник данных для отображения, в данном случае
это объект DataTable Stud.
Реализуем отображения всех данных из таблицы Exam на вкладке Экзамены.
Для этого перейдите на вторую вкладку в режиме дизайнера формы и поместите с
панели Toolbox объект DataGridView. Измените свойство Name на dataGridExam
Дважды щелкните по кнопке Загрузить данные и введите следующий программный код,
добавив предварительно объявление переменной DataTable Exam;
OleDbDataAdapter datAdapExam; перед public Form1(), в обработчике
кнопки private void butUpdExam_Click(object sender, EventArgs e)введите:
Запустите приложение, нажав на F5.
На вкладке преподаватели добавьте объект DataGridView, измените свойство Name на
dataGridPrep.
При добавлении откроется окно в котором необходимо раскрыть список Choose Data
Source. И выбрать из списка таблицу Sotrudniki.
В форму добавятся объекты
Запустите приложение на выполнение F5 и убедитесь, что объект DataGridView
заполнился данными из таблицы Sotrudniki.
Теоретические сведения.
ВVisual Studio предусмотрена поддержка баз данных с полностью автономной
структурой, эта модель называется ADO.NET. Она состоит из следующих пространств
имен:
Using System.Data
Using System.Data.SQLClient
Using System.Data. OleDB
После выполнения команды по подключению к базе данных необходимо обеспечить
сохранение данных в некотором объекте. Data Set – выполняет функцию автономного
кеша для данных. Это объект, находящийся в памяти. Его назначение – предоставление
реляционных структурированных данных в автономном, переносимом и находящимся в
памяти объекте. dataset содержит коллекцию объектов dataTable.
Существует два способа выборки данных, которые отличаются тем, как долго они держат
подключение открытым.
В первом подходе используется объект DataReader, которому для выборки данных
необходимо открытое подключение. Оно эффективно в однопользовательской системе.
Второе – использование DataAdapter – он выполняет команду и заполняет полученной
информацией DataSet или dataTable, а после завершения заполнения информацией
отключается от источника данных, освобождая подключение.
Конструктор SqlDataAdapter поддерживает 4 перегруженных варианта:
1. SqlDataAdapter() – создает экземпляр SqlDataAdapter. Команда с подключением
должна быть указана в свойстве XCommand, которое так же использует
переменные типа SqlCommand.
2. SqlDataAdapter ( string commandText, SqlConnection connection) – этот вариант
позволяет указать в виде строки команду для заполнения DataSet или DataTable, а
также подключение, из которого будет выполнено заполнение.
3. SqlDataAdapter ( string commandText, string connectionString) - позволяет указать в
виде строк команду и нужное подключение.
4. SqlDataAdapter ( string commandText) – указать только команду для заполнения, а
соединение создается раньше с помощью объекта SqlConnection.
Объект Connection
Объект Connection для соединения с базой данных нуждается в строке соединения для
указания пути к СУБД и входа в систему. Свойства класса Connection показаны в таблице.
OleDbConnection, SqlConnection, OdbcConnection – наследники класса Connection,
специфические для провайдеров OleDb, MS SQL, ODBC соответственно.
Свойство
DataSource
Database
State
Описание
Путь к базе данных в файловой системе при использовании Oledb, имя
экземпляра базы сервера при использовании SqlConnection
Возвращает имя базы данных, используемой в объекте Connection после
открытия
Возвращает текущее состояние соединения. Возможные значения –
Broken – «Соединение с источником данных разорвано», значение 16
Closed – « Соединение закрыто », значение 0
Connecting – « Идет процесс подключения », значение 2
Executing – « Соединение находится в процессе выполнения команды 4 ,
Fetching – «Объект соединения занят выборкой данных» значение 8
Open – «Соединение открыто» значение 1.
ConnectionString Строка соединения с СУБД
Все свойства, кроме ConnectionString, только для чтения.
Вызывающая сторона может вставлять, удалять и модифицировать данные в DataTable, но
физически база данных не будет обновлена до тех пора, пока вызывающая сторона не
передаст явно для обновления данных адаптеру объект DataSet
DataGridView позволяет отобразить данные в виде набора строк и столбцов, то есть в виде
таблицы. Чтобы не путать таблицу DataGridView с реляционной таблицей базы данных,
первую называют сеткой.
Таблица DataGridView может быть привязана к источнику данных. Источник данных
устанавливается свойством DataSource.
Источниками могут быть:
● одномерный массив (Array, ArrayList, StringCollection и др.);
● компоненты, реализующие интерфейс IList или IListSource;
● обобщенные классы коллекций;
● DataTable;
● DataView;
● DataSet
Download