Лабораторная работа Тема: «Объекты 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