Автор работы: Пользователь скрыл имя, 13 Апреля 2012 в 22:01, курсовая работа
Технология ADO.NET предназначена для обеспечения доступа к данным в слабосвязанных n-уровневых архитектурах приложений, включая веб-службы [[3]]. ADO.NET позволяет обращаться к разнообразным источникам данных, как базы данных различных поставщиков (MS SQL Server, Oracle, MS Access), так и другие источники данных (MS Excel, Outlook, текстовые файлы). Для программирования баз данных SmartDevice, имеющих по определению ограниченную функциональность, наибольшее значение имеют текстовые форматы данных и данные отсоединенных наборов (DataSet). Набор данных не содержит информации об источнике данных, из которого он наполнялся. В результате можно сохранять набор данных как XML-документ и наполнять его данными как из XML- документа, так и текстового файла. Несмотря на это, каждый поставщик данных обязан предоставлять следующие отсоединенные классы:
Технология ADO.NET предназначена для обеспечения доступа к данным в слабосвязанных n-уровневых архитектурах приложений, включая веб-службы [[3]]. ADO.NET позволяет обращаться к разнообразным источникам данных, как базы данных различных поставщиков (MS SQL Server, Oracle, MS Access), так и другие источники данных (MS Excel, Outlook, текстовые файлы). Для программирования баз данных SmartDevice, имеющих по определению ограниченную функциональность, наибольшее значение имеют текстовые форматы данных и данные отсоединенных наборов (DataSet). Набор данных не содержит информации об источнике данных, из которого он наполнялся. В результате можно сохранять набор данных как XML-документ и наполнять его данными как из XML- документа, так и текстового файла. Несмотря на это, каждый поставщик данных обязан предоставлять следующие отсоединенные классы:
Рассмотрим, как реализуется с помощью ADO.NET доступ к данным MS Access и MS Excel.
Задача темы: изучить методику и получить навыки в разработке функциональности приложений, использующих технологию ADO.NET для загрузки данных из файлов MS Access и MS Excel в форму С# для просмотра.
Разработка: Приложение "Connection" для автоматического подключения к базам данных в форматах mdb и xls.
Состав выполняемых функций:
Наращивание функциональности не предусматривается.
Защита данных не предусматривается.
В качестве входных
данных используются два тестовых файла
- MS Access и MS Excel. Выходные данные программы
– графическое отображение
Шаг 1. Организация дискового пространства и источников данных
Необходимо создать каталог на диске, в который скопировать или создать заново базу данных MS Access и таблицу MS Excel. В нашем примере, каталог – ADO_XLS, в котором размещается приложение С# WindowsApplication. Файлы MS Access и Excel размещаются в каталоге \ADO_XLS\bin\Debug. В базе данных Access "Платежные поручения.mdb" присутствует таблица "Контакты" из двух полей: Код и Контакты, число записей в таблице – три, хотя это непринципиально. В файле Excel "Копия ADO_NET.xls" содержится лист "Содержание" с заполненным столбцом А и числом строк – 22, здесь диапазон строк имеет значение.
Шаг 2. Тестируем подключение к источникам данных
Подключение к источникам данных организуется на настольном компьютере с помощью различных драйверов. Для Access должен присутствовать драйвер Microsoft.Jet.OLEDB.4.0, а для Excel – Microsoft OLE DB Provider for ODBC Drivers. В MS Visual Studio 2003 рекомендуется предварительно проверить подключение к источникам данных с помощью этих драйверов. Для этого в главной линейке меню выбираются опции: Сервис -> Подключение к базам данных -> Поставщики -> Microsoft.Jet.OLEDB.4.0 Provider -> Выбирается файл "Платежные поручения.mbd" -> Проверить подключение – для подключения к файлу Access. Аналогично – для Excel, только провайдер указывается уже другой.
Если тестирование успешно, то в обозревателе серверов (Вид -> Обозреватель серверов) будут видны файлы, к которым выполнено подключение - рис.1.1
Рис. 1.1. Подключение к источникам данных
Далее следует просмотреть свойства подключенных файлов и скопировать содержание строки подключения (ConnectionString) – рис.1.2. Дело в том, что разные провайдеры имеют разный синтаксис строки подключения, по-этому чтобы не гадать, точнее – чтобы не нарываться на исключения при тестировании приложения, лучше довериться генератору строки в MS Visual Studio.
Рис. 1.2. ConnectionString в окне просмотра
свойств подключения к файлу
Шаг 3. Разработка графического интерфейса приложения
Для программы используются одна форма (Form1), на которой размещено окно DataGrid для просмотра данных таблиц, две кнопки подключения к источникам данных и Главное меню (mainMenu) с единственной опцией "О программе". Примерный дизайн которых показан на рис.1.3.
Рис. 1.3.
Шаг 4. Расширяем состав библиотек формы 1
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
/* добавляем
библиотеки подключения к
using System.Data;
using System.Data.Odbc;
using System.Data.OleDb;
private void button1_Click(object sender, System.EventArgs e)
{// Создаем соединение
System.Data.OleDb.
// Задаем параметры строки соединения
Коннект.ConnectionString=
"Data Source=Платежные_поручения.
"Provider=Microsoft.Jet.OLEDB.
/* А вот это копия строки соединения, сгенерированная редактором MS Visual Studio:
Jet OLEDB:Global Partial Bulk Ops=2; Jet OLEDB:Registry Path=;
Jet OLEDB:Database Locking Mode=1;
Data Source= Платежные_поручения.mdb;
Jet OLEDB:Engine Type=5; Provider=Microsoft.Jet.OLEDB.
Jet OLEDB:System database=; Jet OLEDB:SFP=False;
persist security info=False;
Extended Properties=; Mode=Share Deny None;
Jet OLEDB:Encrypt Database=False;
Jet OLEDB:Create System Database=False;
Jet OLEDB:Don't Copy Locale on Compact=False;
Jet OLEDB:Compact Without Replica Repair=False;
User ID=Admin; Jet OLEDB:Global Bulk Transactions=1
Можно видеть, что принципиально важными являются два параметра – источник данных и провайдер, остальные принимаются по умолчанию. */
/* Формируем SQL – запрос к данным таблицы "Контакты". В нашем случае выбираются все поля и записи таблицы */
OleDbDataAdapter da =
new OleDbDataAdapter ("select * from контакты", Коннект);
// Создаем таблицу для данных
DataTable dt =new DataTable();
/* таблице присваиваем
имя, чтобы программно
dt.TableName="Контакты";
da.Fill(dt); // Заполняем таблицу данными из адаптера
//привязываем элемент просмотра данных программно
dataGrid1.TableStyles.Clear(); // чистим стиль элемента
// стиль грид делаем программно
DataGridTableStyle ts= new DataGridTableStyle();
// стиль будет
разработан для таблицы "
ts.MappingName="Контакты";
DataGridTextBoxColumn cs=new DataGridTextBoxColumn();
cs.MappingName="Код"; // для столбца "Код"
cs.HeaderText="Код"; // Заголовок столбца – тоже "Код"
cs.Width=30; // ширина столбца 30 пикселей
cs.NullText="";
ts.GridColumnStyles.Add(cs); //
добавили в стиль столбцов
// форматируем второй столбец
cs=new DataGridTextBoxColumn();
cs.MappingName="Контакты"; // имя столбца "Контакты"
cs.HeaderText="Контакты";
cs.Width=240;
cs.NullText="";
ts.GridColumnStyles.Add(cs);
// добавляем в стиль DataGrid
this.dataGrid1.TableStyles.
dataGrid1.DataSource=dt.
}
Шаг 6. Создаем процедуру для кнопки подключения к данным файла Excel
private void button2_Click(object sender, System.EventArgs e)
{// создаем соединение с помощью драйвера ODBC
System.Data.Odbc.
Коннект.ConnectionString= "Provider=MSDASQL.1;"+
"DSN=Excel Files;"+
"DBQ=Копия ADO_NET.xls";
/* А это копия
строки подключения.
Provider=MSDASQL.1;
Persist Security Info=False;
Extended Properties="DSN=Excel Files";
DBQ=F:\LEOPOLD\ADO_NET\ADO_
DefaultDir=F:\LEOPOLD\ADO_NET;
DriverId=790;
MaxBufferSize=2048;
PageTimeout=5;
Initial Catalog=F:\LEOPOLD\ADO_NET\
*/
/* обратите внимание – в SQL – запросе к листу книги "Содержание" указывается диапазон ячеек через знак $ */
OdbcDataAdapter da =
new OdbcDataAdapter ("select * from [Содержание$A1:A33]",Коннект);
// дальше все аналогично, как в процедуре доступа к файлу Access
DataTable dt =new DataTable();
dt.TableName="Содержание";
da.Fill(dt);
//привязываем
dataGrid1.TableStyles.Clear();
// стиль грид делаем программно
DataGridTableStyle ts= new DataGridTableStyle();
ts.MappingName="Содержание";
DataGridTextBoxColumn cs=new DataGridTextBoxColumn();
cs.Width=270;
/* Здесь тонкость – в запросе не поддерживается точка, вместо нее генерируется # */
cs.MappingName="ADO#NET для SmartDevice:";
// а заголовок столбца поменяем на правильный
cs.HeaderText="ADO.NET для SmartDevice:";
cs.NullText="";
ts.GridColumnStyles.Add(cs);
this.dataGrid1.TableStyles.
dataGrid1.DataSource=dt.
}
Результат работы кнопок показан на рис. 1.4 и 1.5
Рис. 1.4. Загруженные данные из MS Access
Рис. 1.5. Загруженные данные из MS Excel
Шаг 7. Создаем процедуру для опции главного меню "О программе"
В процедуре
выводится сообщение с
private void menuItem1_Click(object sender, System.EventArgs e) {
MessageBox.Show("Создание
соединения с источником
"и установка строки связи.\n"+
"Байдачный С.С., NET Framework. М., \n"+
"Солон-Пресс, 2004, с. 386\n"+
"Гамильтон Б. ADO.NET для профессионалов \n"+
"СПб., Питер, 2005, с.25","Подробнее...");
}