Работа с базами данных — XML и OLE

Характеристика особенностей работы ActiveX Data Object .NET с базами данных. Анализ источников данных для данного приложения. Описание порядка создания приложения в Visual Studio 2010, а также его модификации. Описание результатов работы приложения.

Рубрика Программирование, компьютеры и кибернетика
Вид лабораторная работа
Язык русский
Дата добавления 24.04.2017
Размер файла 1,9 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Лабораторная работа № 10:

Работа с базами данных -- XML и OLE

Содержание

Вводная часть

1. Создание приложения Windows Forms

2. Модификация приложения Windows Forms: ODBC

3. Модификация приложения Windows Forms: OLE

4. Модификация приложения Windows Forms: XML

Завершающая часть

О приложении к Лабораторной работе № 10

Вводная часть

В этой работе будет рассмотрена работа с базами данных. А именно с текстовыми файлами *.xml и языком расширяемой разметки (от англ. eXtensible Markup Language - расширяемый язык разметки) XML, а также ADO.NET (ActiveX Data Objects .NET) и один из провайдеров данных ADO.NET: в частности OLE (Object Linking and Embedding) и ODBC (Open Database Connectivity).

По данной тематике (работе с базами данных в C#) на данный момент существует достаточное количество материалов, как в печатном издании, так и в сети Интернет (различных статей и курсов). В данной работе будут рассмотрены лишь основные обобщённые моменты работы с базами данных (через ODBC, OLE и XML).

Что такое ADO.NET?

ActiveX Data Objects .NET является набором классов, реализующих программные интерфейсы для облегчения подключения к базам данных из приложения независимо от особенностей реализации конкретной системы управления базами данных и от структуры самой базы данных, а также независимо от места расположения этой самой базы -- в частности, в распределенной среде (клиент-серверное приложение) на стороне сервера.

ADO.NET широко используется совместно с технологией web-программирования с использованием объектов ASP.NET для доступа к расположенным на сервере базам данных со стороны клиента.

В ADO.NET используется доступ к отсоединенным данным. При этом соединение устанавливается лишь на то время, которое необходимо для проведения определенной операции над базой данных.

Поставщик данных для приложения (Provider) - объект, предназначенный для обеспечения взаимодействия приложения с хранилищем информации (базами данных).

Естественно, приложению нет никакого дела до того, где хранится и как извлекается потребляемая приложением информация. Для приложения источником данных является тот, кто передает данные приложению. И как сам этот источник эту информацию добывает - никого не касается.

Источник данных (Data Provider) - это набор взаимосвязанных компонентов, обеспечивающих доступ к данным. Функциональность и само существование провайдера обеспечивается набором классов, специально для этой цели разработанных.

ADO.NET поддерживает следующие типа источников данных:

Имя провайдера

API-префикс

Описание источника данных

ODBC Data Provider

Odbc

Источники данных с ODBC-интерфейсом. Устаревший провайдер.

OleDb Data Provider

OleDb

Источники данных с OleDb-интерфейсом, для Access или Excel.

Oracle Data Provider

Oracle

Для баз данных Oracle.

SQL Data Provider

Sql

Для работы с Microsoft SQL Server.

Borland Data Provider

Bdp

Общий доступ к множеству баз данных, таких как Interbase, SQL Server, IBM DB2, и Oracle.

Нас пока интересует только ODBC и собственно OLE.

Что такое ODBC?

ODBC -- это программный интерфейс (API) доступа к базам данных, разработанный фирмой Microsoft, в сотрудничестве с Simba Technologies на основе спецификаций Call Level Interface (CLI), который разрабатывался организациями SQL Access Group, X/Open и Microsoft. Впоследствии CLI был стандартизован ISO ISO/IEC 9075-3:2003. Стандарт CLI призван унифицировать программное взаимодействие с СУБД, сделать его независимым от поставщика СУБД и программно-аппаратной платформы.

В начале 1990 г. существовало несколько поставщиков баз данных, каждый из которых имел собственный интерфейс. Если приложению было необходимо общаться с несколькими источниками данных, для взаимодействия с каждой из баз данных было необходимо написать свой код. Для решения возникшей проблемы Microsoft и ряд других компаний создали стандартный интерфейс для получения и отправки источникам данных различных типов. Этот интерфейс был назван Open Database Connectivity, или открытый механизм взаимодействия с базами данных.

C помощью ODBC прикладные программисты могли разрабатывать приложения для использования одного интерфейса доступа к данным, не беспокоясь о тонкостях взаимодействия с несколькими источниками.

Это достигается благодаря тому, что поставщики различных баз данных создают драйверы, реализующие конкретное наполнение стандартных функций из ODBC API с учётом особенностей их продукта. Приложения используют эти функции, реализованные в соответствующем конкретному источнику данных драйвере, для унифицированного доступа к различным источникам данных.

MFC (Microsoft Foundation Classes, библиотека на языке С++, Microsoft) усовершенствовала ODBC для разработчиков приложений. Истинный интерфейс ODBC является обычным процедурным API. Вместо создания простой оболочки процедурного API разработчики MFC создали набор абстрактных классов, представляющих логические сущности в базе данных.

Что такое OLE?

OLE (произносится как oh-lay [олэй]) -- технология связывания и внедрения объектов в другие документы и объекты, разработанная корпорацией Майкрософт.

В 1996 году Microsoft переименовала технологию в ActiveX.

OLE позволяет передавать часть работы от одной программы редактирования к другой и возвращать результаты назад. Например, установленная на персональном компьютере издательская система может послать некий текст на обработку в текстовый редактор, либо некоторое изображение в редактор изображений с помощью OLE-технологии.

Основное преимущество использования OLE (кроме уменьшения размера файла) в том, что она позволяет создать главный файл, картотеку функций, к которой обращается программа. Этот файл может оперировать данными из исходной программы, которые после обработки возвращаются в исходный документ.

OLE используется при обработке составных документов (compound documents), может быть использована при передаче данных между различными несвязанными между собой системами посредством интерфейса переноса (drag-and-drop), а также при выполнении операций с буфером обмена. Идея внедрения широко используется при работе с мультимедийным содержанием на веб-страницах (пример -- Веб-ТВ), где используется передача изображения, звука, видео, анимации в страницах HTML (язык гипертекстовой разметки) либо в других файлах, также использующих текстовую разметку (например, XML и SGML). Однако, технология OLE использует архитектуру «толстого клиента», то есть сетевой ПК с избыточными вычислительными ресурсами. Это означает, что тип файла либо программа, которую пытаются внедрить, должна присутствовать на машине клиента. Например, если OLE оперирует таблицами Microsoft Excel, то программа Excel должна быть инсталлирована на машине пользователя.

Что такое XML?

XML (произносится [экс-эм-эмл]) -- рекомендованный Консорциумом Всемирной паутины (W3C) язык разметки, фактически представляющий собой свод общих синтаксических правил. XML -- текстовый формат, предназначенный для хранения структурированных данных (взамен существующих файлов баз данных), для обмена информацией между программами, а также для создания на его основе более специализированных языков разметки (например, XHTML). XML является упрощённым подмножеством языка SGML. Подробнее об XML будет рассказано ниже.

Что будет представлять собой приложение, разрабатываемое в данной работе?

Приложение будет представлять собой окно Windows Forms, поделённое на группы элементов, в каждой группе будут располагаться элементы управления для работы с той или иной задачей и базой данных.

1. Создание приложения Windows Forms

Запускаем Visual Studio 2010, откроется Начальная страница:

Для начала, надо создать проект, для этого выполним последовательно: Файл -> Создать -> Проект… (также можно просто нажать сочетание клавиш Ctrl+Shift+N или пункт «Создать проект…» на Начальной странице):

Рис. 2. 1. Создание нового проекта

Выберем слева в пункте Установленные шаблоны язык Visual C#, далее найдём в списке Приложение Windows Forms. Также здесь можно выбрать какой использовать «фреймворк» (набора компонентов для написания программ). В нашем случае выберем .NET Framework 4.

Рис. 2. 2. Окно создания нового проекта

В поле Имя вводим LWP10DB -- это название программы (выбрано по названию лабораторного практикума, номеру и названию работы). В поле Расположение указана конечная директория, где будет находиться весь проект. Выберем расположение удобное для быстрого поиска. В поле Имя решения вводится либо название программы «по умолчанию» из поля Имя автоматически, либо можно ввести своё собственное. Под этим именем будет создана конечная папка проекта (если Имя и Имя решения разные).

Рис. 2. 3. Вводим данные нового проекта приложения Windows Forms

После нажатия клавиши ОК мы увидим сформированный проект и исходный код приложения Windows Forms (не пустого изначально).

Рис. 2. 4. Обозреватель решений: состав проекта приложения Windows Forms сформированного средой разработки

Теперь, можно откомпилировать созданную программу, нажав клавишу F5 (Отладка -> Начать отладку или нажав на иконку . Тем самым мы запускаем приложение в режиме отладки (и производим компиляцию debug-версии программы) (Debug выбрано изначально).

Рис. 2. 5. Запуск приложения Windows Forms по конфигурации Debug

2. Модификация приложения Windows Forms: ODBC

Для начала изменим размер нашей единственной формы. Для этого можно потянуть за уголок в нужном направлении на странице визуального представления формы1. Но также размер можно менять на панели свойств этой формы. Для этого нужно поменять значение размера в пикселях (высоту и ширину) в поле Size.

ПРИМЕЧАНИЕ № 1: Для перехода на визуальное представление формы, необходимо двойным нажатием в обозревателе решений нажать на значок формы () или выбрать вкладку на панели вкладок с именем <имя формы>.cs [Конструктор].

Задаём следующие параметры формы на панели Свойства:

(Name)

изменим с Form1.cs2 на LWP10Main

^ Поменяем внутреннее имя формы.

Text

изменим с Form1 на Работа с базами данных (C#)

^ Поменяем заголовок формы (то что отображается в шапке приложения слева).

Icon

изменим изображение (иконку) приложения

^ Необходим файл значка *.ico.

Size

изменим со значений 300; 300 на 800; 600

^ Поменяем размер формы.

ПРИМЕЧАНИЕ № 2: Для того, чтобы поменять имя файла нашей формы, необходимо выполнить следующее: выделить в обозревателе решений значок формы () и нажать правую кнопку мыши, затем выбрать Переименовать. Ввести необходимое новое имя СОХРАНЯЯ расширение *.cs. После смены имени, автоматически поменяются имена проассоциированных непосредственно с формой файлов:

Получим нечто подобное:

Рис. 3. 1. Модифицированная форма приложения

Добавим на нашу форму ToolTip ().

Параметры добавленного элемента всплывающей подсказки таковы:

(Name):

Hint

Теперь приступим к формированию первой группы элементов и её функциональности. Для начала расставим элементы как показано на рисунке ниже:

Рис. 3. 2. Расстановка элементов первой группы (ODBC)

Здесь у нас четыре кнопки Button, один RichTextBox (слева внизу), и простой погашенный TextBox.

По порядку распишем Свойства каждого элемента:

Button:

(Name):

B_ODBC_Search

Text:

Выбрать базу данных (*.mdb)

Size:

200; 23

Button:

(Name):

B_ODBC_Connect

Text:

Открыть соединение

Size:

200; 23

Button:

(Name):

B_ODBC_Add

Text:

Добавить запись

Size:

200; 23

Button:

(Name):

B_ODBC_Disconnect

Text:

Закрыть соединение

Size:

200; 23

TextBox:

(Name):

TB_ODBC_Path

ReadOnly:

True

RicTextBox:

(Name):

RTB_ODBC

ReadOnly:

True

GroupBox:

(Name):

GB_ODBC

Text:

ODBC

OpenFileDialog:

(Name):

OFD_ODBC

FileName:

LWP10-DB-ODBC

InitialDirectory:

D:\

Filter

База данных *.mdb|*.mdb

Теперь отправляемся в код формы (правая кнопка мыши на значке формы, далее Перейти к коду или нажмём на клавишу F7):

В самое начало кода добавим:

using System.Data.Odbc; // ODBC

Найдём:

public partial class LWP10Main : Form

{

Добавим после:

Double Counter = 4;

OdbcConnection ConnectionOBDC;

Изменим следующую функцию LWP10Main():

public LWP10Main()

{

InitializeComponent();

B_ODBC_Add.Enabled = false;

B_ODBC_Connect.Enabled = false;

B_ODBC_Disconnect.Enabled = false;

TB_ODBC_Path.Text = "D:\\LWP10-DB-ODBC.mdb";

}

Событие Click кнопки B_ODBC_Search («Выбрать базу данных»):

private void B_ODBC_Search_Click(object sender, EventArgs e)

{

if (OFD_ODBC.ShowDialog() == DialogResult.OK)

{

B_ODBC_Add.Enabled = true;

B_ODBC_Connect.Enabled = true;

B_ODBC_Disconnect.Enabled = true;

Directory.CreateDirectory(Path.GetDirectoryName(OFD_ODBC.FileName) + @"\Копии"); // Создаём директорию под изменённые БД

File.Copy(OFD_ODBC.FileName, Path.GetDirectoryName(OFD_ODBC.FileName) + @"\Копии\" + OFD_ODBC.SafeFileName, true); // Копируем туда выбранную БД (перезаписываем, в случае обнаружения похожего файла)

if (Path.GetDirectoryName(OFD_ODBC.FileName) == Directory.GetDirectoryRoot(OFD_ODBC.FileName)) // Проверяем путь, если находимся в корневой директории диска, режем один слеш

TB_ODBC_Path.Text = Path.GetDirectoryName(OFD_ODBC.FileName) + @"Копии\" + OFD_ODBC.SafeFileName;

else

TB_ODBC_Path.Text = Path.GetDirectoryName(OFD_ODBC.FileName) + @"\Копии\" + OFD_ODBC.SafeFileName;

}

}

Небольшое замечание по коду выше. После выбора БД в окне диалога, приложение будет создавать в директории с БД новую папку «Копии» и копировать туда выбранную в диалоге БД. Все операции с БД (из нашего приложения) будут происходить с копией, а не с оригиналом. Копия БД будет затираться всякий раз при открытии диалога выбора и выбора там БД.

Событие Click кнопки B_ODBC_Connect («Открыть соединение»):

private void B_ODBC_Connect_Click(object sender, EventArgs e)

{

String ConnetionStringODBC = null;

ConnetionStringODBC = "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" + TB_ODBC_Path.Text + ";"; // Выбираем источник данных ("провайдера") и указываем путь к нему через TextBox

ConnectionOBDC = new OdbcConnection(ConnetionStringODBC); // Инициализируем объект соединения с новыми параметрами

try

{

ConnectionOBDC.Open(); // Открываем соединение

MessageBox.Show("Соединение с базой данных " + TB_ODBC_Path.Text + " успешно открыто!", "Работа с базами данных (C#) :: ODBC");

}

catch (Exception ex)

{

MessageBox.Show("Невозможно открыть соединение с базой данных " + TB_ODBC_Path.Text + " (" + ex.Message + ")!", "Работа с базами данных (C#) :: ODBC");

}

}

Событие Click кнопки B_ODBC_Add («Добавить запись»):

private void B_ODBC_Add_Click(object sender, EventArgs e)

{

String SQL_ODBC = "INSERT INTO \"Главная таблица\" VALUES( '" + Counter++ + "', 'Число', '999', 'ABC' );"; // Запрос на на добавление записей в нашу таблицу, ключевое поле будет числовым, начинается с 4 и далее растёт инкрементом

OdbcCommand Command = new OdbcCommand(SQL_ODBC, ConnectionOBDC); // Формируем команду

try

{

Command.ExecuteNonQuery(); // Выполняем команду

RTB_ODBC.Clear(); // Очищаем RichTextBox

RTB_ODBC.AppendText(Command.CommandText); // Вставляем результат выполнения команды с нашей базой

}

catch (Exception ex)

{

RTB_ODBC.Clear();

RTB_ODBC.AppendText(ex.Message);

}

}

Событие Click кнопки B_ODBC_Disconnect («Закрыть соединение»):

private void B_ODBC_Disconnect_Click(object sender, EventArgs e)

{

String SQL_ODBC = "DELETE FROM \"Главная таблица\" WHERE \"Главная таблица\".\"Первое поле\" = 'Число';"; // Запрос на удаление всего добавленного (чтобы не делать это вручную потом)

OdbcCommand Command = new OdbcCommand(SQL_ODBC, ConnectionOBDC); // Формируем команду

try

{

Command.ExecuteNonQuery(); // Выполняем команду

RTB_ODBC.Clear(); // Очищаем RichTextBox

RTB_ODBC.AppendText(Command.CommandText); // Вставляем результат выполнения команды с нашей базой

ConnectionOBDC.Close(); // Закрываем соединение

MessageBox.Show("Соединение с базой данных " + TB_ODBC_Path.Text + " успешно закрыто!", "Работа с базами данных (C#) :: ODBC");

}

catch (Exception ex)

{

RTB_ODBC.Clear();

RTB_ODBC.AppendText(ex.Message);

MessageBox.Show("Невозможно закрыть соединение с базой данных " + TB_ODBC_Path.Text + " (" + ex.Message + ")!", "Работа с базами данных (C#) :: ODBC");

}

}

Последнее что нам нужно, это база данных в формате Microsoft Access 2000. Сделаем её, например в Microsoft Office Access 2010. База будет содержать одну таблицу (Главная таблица) и четыре столбца: Ключевое поле (являющее ключевым, числовое), : Первое поле, Второе поле и Третье поле (все текстовые).

Заполним первые три записи (Ключевое поле: 1, 2 и 3):

Рис. 3. 3. База данных LWP10-DB-ODBC.mdb

Для сохранения в формат Access 2000 выполним: Файл -> Сохранить и опубликовать, далее выберем формат Базы данных Access 2000:

Рис. 3. 4. Сохранение в формате Access 2000

Компилируем приложение (Debug) и запускаем. Выбираем нашу базу кнопкой в левом верхнем углу приложения, затем жмём на Открыть соединение, далее несколько раз на Добавить запись (при этом наблюдая за тем что пишет RichTextBox). Если после нескольких добавлений открыть базу данных (не нажимая на Закрыть соединение или не закрывая само приложение), то можно увидеть новые записи:

Удаляем все новые записи кнопкой Закрыть соединение и тем самым также закрываем соединение с базой.

Рис. 3. 5. Окончательная работа блока: ODBC

3. Модификация приложения Windows Forms: OLE

Для соединения с базой данных Microsoft Office Access 2003 и ниже (файл *.mdb) в C# следует использовать класс OleDbConnection со следующими параметрами соединения:

Provider=Microsoft.Jet.OLEDB.4.0; Data Source=DataBaseFile

Здесь DataBaseFile -- абсолютный путь к файлу базы данных Access. «Провайдер» соединения должен иметь значение Microsoft.Jet.OLEDB.4.0.

Для соединения с базой данных Microsoft Office Access 2007 и выше (файл *.accdb) в C# следует использовать класс OleDbConnection со следующими параметрами соединения:

Provider=Microsoft.ACE.OLEDB.12.0; Data Source=DataBaseFile

Здесь DataBaseFile -- абсолютный путь к файлу базы данных Access. «Провайдер» соединения должен иметь значение Microsoft.ACE.OLEDB.12.0 либо для версии Access 2010: Microsoft.ACE.OLEDB.14.0.

Пример:

String ConnetionString = null;

ConnetionStringO = "Provider=Microsoft.ACE.OLEDB.12.0;" +

@"Data Source=D:\Database.accdb";

ConnectionOLE1 = new OleDbConnection(ConnetionStringOLE1);

Для отправки SQL-запросов и чтения их результатов используются объекты OleDbCommand и OleDbDataReader.

Для выполнения запросов на вставку, изменение, или удаление данных из базы данных следует использовать метод класса OleDbCommand: ExecuteNonQuery(). Его вызов выполняет указанный в свойстве CommandText класса OleDbCommand запроc и возвращает int-число затронутых запросом полей.

Пример:

OleDbConnection Conn = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0; Data Source=Database.mdb"); // Инициализируем параметры соединения

Conn.Open(); // Открываем соединение с базой даннфх

OleDbCommand Cmd = new OleDbCommand(); // Создаём команду

Cmd.CommandText = "INSERT INTO Main_Table VALUES (1,2,3)"; // Текст команды

int rowsAffected = Cmd.ExecuteNonQuery(); // Выполнение команды с возвратом в int

System.Windows.Forms.MessageBox.Show(rowsAffected.ToString()); // Вывод результата

Если база данных из примеры выше пустая, то int будет равно единице.

Во время выполнения команд вставки (SQL: INSERT INTO) можно использовать параметры, что может пригодиться, например, для добавления в базу данных файла изображения.

Пример:

OleDbCommand Сmd = new OleDbCommand("INSERT INTO Main_Table (columns) VALUES (@param)", Сonn);

Сmd.Parameters.Add("@param", "abc[[''[]''kl'm");

Сmd.ExecuteNonQuery();

При каких-либо ошибках в синтаксисе, или структуре SQL-запроса, программа падает в OS Loader Lock (фактически прерывается работа), и не дает никакой информации о произошедшей ошибке. Чтобы этого избежать и получить довольно исчерпывающую информацию о произошедшей ошибке, следует выполнять запросы в try-catch блоках. В коде работы подобные приёмы будут использованы повсеместно.

Теперь приступим к формированию второй группы элементов и её функциональности. Для начала расставим элементы как показано на рисунке ниже:

Рис. 4. 1. Расстановка элементов первой группы (OLE # 1)

Здесь представлены три кнопки Button, один ListBox (по центру), простой погашенный TextBox, как в предыдущей группе, и четыре TextBox'а для ввода с клавиатуры данных, которые будут добавлять в базу данных. Слева от каждого размещены по одному текстовому элементу: Label. Также с панели инструментов было добавлен ещё один OpenFileDialog-элемент.

Функциональность блока будет следующей. При нажатии на кнопку Выбрать базу данных, будет предложено выбрать одну из двух возможных типов базы: это база данных для старых версий Access (*.mdb) и для новых (*.accdb). После этого будет выдано сообщение об успехе или неудаче выбора с описанием причины ошибки в случае неудачи. Далее при нажатии Прочитать все записи, в центральный ListBox будут занесены все записи из базы данных. Ввод значений в TextBox'ы слева и нажатие кнопки Добавить записи сохранит в нашей базе новый записи. Будет использована та же самая база данных, что и для предыдущего блока: LWP10-DB-ODBC.mdb, а также копия этой же базы, сохранённая как файл *.accdb, для версии Access 2007 или Access 2010. База: LWP10-DB-OLE.accdb.

По порядку распишем Свойства каждого элемента:

Button:

(Name):

B_OLE_1_Search

Text:

Выбрать базу данных

Size:

200; 23

Button:

(Name):

B_OLE_1_Read

Text:

Прочитать все записи

Size:

200; 23

Button:

(Name):

B_OLE_1_Add

Text:

Добавить записи

Size:

200; 23

TextBox:

(Name):

TB_OLE_1_Path

ReadOnly:

True

ListBox:

(Name):

LB_OLE_1

GroupBox:

(Name):

GB_OLE_1

Text:

OLE # 1

OpenFileDialog:

(Name):

OFD_OLE_1

InitialDirectory:

D:\

Filter

База данных *.mdb|*.mdb|База данных *.accdb|*.accdb

TextBox:

(Name):

TB_OLE_1_1

TextBox:

(Name):

TB_OLE_1_2

TextBox:

(Name):

TB_OLE_1_3

TextBox:

(Name):

TB_OLE_1_4

Откроем файл LWP10Main.cs и в самом начале добавим две ссылки:

using System.Data.OleDb; // OLE

using System.IO; // Для получения расширения файла базы данных

Найдём:

public partial class LWP10Main : Form

{

Double Counter = 4;

OdbcConnection ConnectionOBDC;

Добавим после:

String ConnetionStringOLE1 = null; // Переменная для сохранения данных соединения

OleDbConnection ConnectionOLE1; // Объект для открытия подключения к базе данных

String SQL_OLE = null; // Переменная для поискового запроса

String SQL_OLE_ADD = null; // Переменная для добавления данных

Найдём:

public LWP10Main()

{

InitializeComponent();

TB_ODBC_Path.Text = "D:\\LWP10-DB-ODBC.mdb";

Добавим после:

TB_OLE_1_Path.Text = "D:\\LWP10-DB-OLE.accdb";

B_OLE_1_Read.Enabled = false;

B_OLE_1_Add.Enabled = false;

TB_OLE_1_1.Text = Counter.ToString();

SQL_OLE = "SELECT * FROM [Главная таблица]";

Событие Click кнопки Выбрать базу данных:

private void B_OLE_1_Search_Click(object sender, EventArgs e)

{

if (OFD_OLE_1.ShowDialog() == DialogResult.OK)

{

B_OLE_1_Read.Enabled = true; // Активируем кнопку "Прочитать все записи"

B_OLE_1_Add.Enabled = true;

//TB_OLE_1_Path.Text = OFD_OLE_1.FileName;

Directory.CreateDirectory(Path.GetDirectoryName(OFD_OLE_1.FileName) + @"\Копии"); // Создаём директорию под изменённые БД

File.Copy(OFD_OLE_1.FileName, Path.GetDirectoryName(OFD_OLE_1.FileName) + @"\Копии\" + OFD_OLE_1.SafeFileName, true); // Копируем туда выбранную БД (перезаписываем, в случае обнаружения похожего файла)

if (Path.GetDirectoryName(OFD_OLE_1.FileName) == Directory.GetDirectoryRoot(OFD_OLE_1.FileName)) // Проверяем путь, если находимся в корневой директории диска, режем один слеш

TB_OLE_1_Path.Text = Path.GetDirectoryName(OFD_OLE_1.FileName) + @"Копии\" + OFD_OLE_1.SafeFileName;

else

TB_OLE_1_Path.Text = Path.GetDirectoryName(OFD_OLE_1.FileName) + @"\Копии\" + OFD_OLE_1.SafeFileName;

if (Path.GetExtension(OFD_OLE_1.FileName) == ".mdb") // Узнаём расширение файла выбранного в диалоге открытия (указываем полный путь) и сравниваем его с ".mdb"

{

ConnetionStringOLE1 = "Provider=Microsoft.Jet.OLEDB.4.0;" +

@"Data Source=" + TB_OLE_1_Path.Text + "";

MessageBox.Show("Выбрана база данных " + TB_OLE_1_Path.Text + " формата: *" + Path.GetExtension(TB_OLE_1_Path.Text) + "!", "Работа с базами данных (C#) :: OLE # 1");

}

if (Path.GetExtension(OFD_OLE_1.FileName) == ".accdb")

{

ConnetionStringOLE1 = "Provider=Microsoft.ACE.OLEDB.12.0;" +

@"Data Source=" + TB_OLE_1_Path.Text + "";

MessageBox.Show("Выбрана база данных " + TB_OLE_1_Path.Text + " формата: *" + Path.GetExtension(TB_OLE_1_Path.Text) + "!", "Работа с базами данных (C#) :: OLE # 1");

}

}

}

Событие Click кнопки Показать все записи:

private void B_OLE_1_Read_Click(object sender, EventArgs e)

{

LB_OLE_1.Items.Clear();

ConnectionOLE1 = new OleDbConnection(ConnetionStringOLE1);

try

{

ConnectionOLE1.Open(); // Открываем соединение

MessageBox.Show("Соединение с базой данных " + TB_OLE_1_Path.Text + " успешно открыто!", "Работа с базами данных (C#) :: OLE # 1");

}

catch (Exception ex) // Ловим исключение и вытаскиваем ошибку через ex.Message

{

MessageBox.Show("Невозможно открыть соединение с базой данных " + TB_OLE_1_Path.Text + " (" + ex.Message + ")!", "Работа с базами данных (C#) :: OLE # 1");

}

OleDbCommand Command = new OleDbCommand(SQL_OLE, ConnectionOLE1); // Формируем SQL-команду для текущего подключения

OleDbDataReader DataReader = Command.ExecuteReader(); // Формируем объект для чтения данных из базы данных

LB_OLE_1.Items.Add(Command.CommandText); // Посылаем текст команды в ListBox

// Организуем циклический перебор полученных записей

while (DataReader.Read())

{

LB_OLE_1.Items.Add(DataReader["Ключевое поле"].ToString() + " | " + DataReader["Первое поле"].ToString() + " | " + DataReader["Второе поле"].ToString() + " | " + DataReader["Третье поле"].ToString());

}

// Закрываем потоки чтения и соединения

DataReader.Close();

ConnectionOLE1.Close();

}

Событие Click кнопки Добавить записи:

private void B_OLE_1_Add_Click(object sender, EventArgs e)

{

LB_OLE_1.Items.Clear(); // Очищаем ListBox перед использованием

ConnectionOLE1 = new OleDbConnection(ConnetionStringOLE1); // Передаём параметры объекту соединения

try

{

ConnectionOLE1.Open(); // Открываем соединение

MessageBox.Show("Соединение с базой данных " + TB_OLE_1_Path.Text + " успешно открыто!", "Работа с базами данных (C#) :: OLE # 1");

}

catch (Exception ex)

{

MessageBox.Show("Невозможно открыть соединение с базой данных " + TB_OLE_1_Path.Text + " (" + ex.Message + ")!", "Работа с базами данных (C#) :: OLE # 1");

}

SQL_OLE_ADD = "INSERT INTO [Главная таблица] VALUES('" + Counter.ToString() + "', '" + this.TB_OLE_1_2.Text + "', '" + this.TB_OLE_1_3.Text + "', '" + this.TB_OLE_1_4.Text + "');";

OleDbCommand Command = new OleDbCommand(SQL_OLE_ADD, ConnectionOLE1);

try

{

Command.ExecuteNonQuery(); // Выполняем команду

}

catch (Exception ex)

{

MessageBox.Show("Невозможно выполнить команду с базой данных " + TB_OLE_1_Path.Text + " (" + ex.Message + ")!", "Работа с базами данных (C#) :: OLE # 1");

}

LB_OLE_1.Items.Add(Command.CommandText); // Отправляем текст команды в ListBox

Counter++;

TB_OLE_1_1.Text = Counter.ToString();

}

Компилируем приложение (Debug) и запускаем:

Рис. 4. 2. Окончательная работа блока: OLE # 1

Предположим, что работа в таком виде с базами данных нас не устраивает. Например, весьма неудобно для базы, где в таблице есть более сотни столбцов, делать эту самую сотню TextBox'ов. В этом случае, когда требуется наглядность данных в приложении и малые трудозатраты лучше нужно использовать элемент управления DataGridView и связанные с ним другие элементы, такие как например DataSet.

Оба элемента можно найти на панели элементов на вкладе Данные.

Собственно DataGridView полезен не только для работы с базами данных. Это просто элемент для предоставления данных в программе (в том числе и в визуальной форме).

Для демонстрации работы с этими элементами организуем третью группу элементов: OLE # 2. Приложение же будет выполнять тот же запрос, что и в предыдущем примере, но будет помещать результат в объект DataSet, который подключается к элементу управления DataGridView, а тот автоматически отображает все данные. Для сохранения данных в базе будет использоваться метод «двухсторонней привязки3 данных», который позволит не только просматривать открывшуюся таблицу, но и вводить изменения в элемент DataGridView, добавляя новые строки, изменяя содержимое имеющихся строк и удаляя ненужные. Объекты класса DataAdapter способны выполнять как операцию SELECT, получая данные запроса из базы данных, так и команды INSERT, UPDATE и DELETE, изменяя содержимое таблицы базы данных. база данные приложение

Но прописывать данные команды самостоятельно надобности нет. Пространство имен System.Data содержит небольшой, но очень полезный класс CommandBuilder, который умеет создавать команды SQL и автоматически их выполнять.

ПРИМЕЧАНИЕ № 3: Подключение источника данных к визуальному элементу управления называется привязкой, или связыванием данных.

Теперь приступим к формированию третьей группы элементов и её функциональности. Для начала расставим элементы как показано на рисунке ниже:

Рис. 4. 3. Расстановка элементов первой группы (OLE # 2)

Здесь представлены три кнопки Button, один, простой погашенный TextBox, как в предыдущей группе и два DataGridView. Также с панели инструментов было добавлен ещё один OpenFileDialog-элемент и один DataSet. Сразу оговоримся, для работы с добавлением данных через DataGridView база данных была переделана и название таблиц и столбцов были изменены (убраны символы кириллицы). Это связано с тем, что при работе с базой, в которой есть не английские символы в названиях таблиц (и столбцов) можно столкнуться с ошибками (не всегда). Сама же база осталась без изменений, Название: LWP10-DB-OLE-Special.accdb. Содержание таблицы Main_Table:

Функциональность блока будет следующей. Выбираем базу данных как в предыдущих случаях и жмём на Показать все записи. Всплывающее сообщение с результатами, за которым идёт добавление всех данных базы в левый (по рисунку 4. 3) DataGridView. Правый же будет загружен сразу при старте приложения (база будет взята по статическому пути D:\LWP10-DB-Special.accdb. Вносим изменения в ячейки (в правом DataGridViewv) и жмём на Сохранить записи. Результат можно будет увидеть перезагрузив приложение, либо открыв базу через Access. Изменения ячеек в левом DataGridView не будут нигде сохранены.

По порядку распишем Свойства каждого элемента:

Button:

(Name):

B_OLE_2_Search

Text:

Выбрать базу данных

Size:

200; 23

Button:

(Name):

B_OLE_2_Read

Text:

Прочитать все записи

Size:

200; 23

Button:

(Name):

B_OLE_2_Save

Text:

Сохранить записи

Size:

200; 23

TextBox:

(Name):

TB_OLE_2_Path

ReadOnly:

True

GroupBox:

(Name):

GB_OLE_2

Text:

OLE # 2

OpenFileDialog:

(Name):

OFD_OLE_2

InitialDirectory:

D:\

Filter

База данных *.mdb|*.mdb|База данных *.accdb|*.accdb

DataGridView:

(Name):

DataGridViewOLE

DataGridView:

(Name):

DataGridViewOLE_S

DataSetw:

(Name):

DataSetOLE

Теперь перейдём к коду. Найдём:

String SQL_OLE_ADD = null; // Переменная для добавления данных

Добавим после:

String ConnetionStringOLE2 = null;

OleDbConnection ConnectionOLE2;

String ConnetionStringOLE_S = null;

OleDbConnection ConnectionOLE_S;

OleDbDataAdapter DataAdapter_S;

Найдём:

SQL_OLE = "SELECT * FROM [Главная таблица]";

Добавим после:

TB_OLE_2_Path.Text = "D:\\LWP10-DB-OLE.accdb";

B_OLE_2_Read.Enabled = false;

DataGridViewOLE.DataMember = "Table"; // Указываем на тип подсписка для DataGridView

Событие Click кнопка Выбор базы данных:

private void B_OLE_2_Search_Click(object sender, EventArgs e)

{

if (OFD_OLE_2.ShowDialog() == DialogResult.OK)

{

B_OLE_2_Read.Enabled = true;

B_OLE_2_Save.Enabled = true;

//TB_OLE_2_Path.Text = OFD_OLE_2.FileName;

Directory.CreateDirectory(Path.GetDirectoryName(OFD_OLE_2.FileName) + @"\Копии"); // Создаём директорию под изменённые БД

File.Copy(OFD_OLE_2.FileName, Path.GetDirectoryName(OFD_OLE_2.FileName) + @"\Копии\" + OFD_OLE_2.SafeFileName, true); // Копируем туда выбранную БД (перезаписываем, в случае обнаружения похожего файла)

if (Path.GetDirectoryName(OFD_OLE_2.FileName) == Directory.GetDirectoryRoot(OFD_OLE_2.FileName)) // Проверяем путь, если находимся в корневой директории диска, режем один слеш

TB_OLE_2_Path.Text = Path.GetDirectoryName(OFD_OLE_2.FileName) + @"Копии\" + OFD_OLE_2.SafeFileName;

else

TB_OLE_2_Path.Text = Path.GetDirectoryName(OFD_OLE_2.FileName) + @"\Копии\" + OFD_OLE_2.SafeFileName;

if (Path.GetExtension(OFD_OLE_2.FileName) == ".mdb")

{

ConnetionStringOLE2 = "Provider=Microsoft.Jet.OLEDB.4.0;" +

@"Data Source=" + TB_OLE_2_Path.Text + "";

MessageBox.Show("Выбрана база данных " + TB_OLE_2_Path.Text + " формата: *" + Path.GetExtension(TB_OLE_2_Path.Text) + "!", "Работа с базами данных (C#) :: OLE # 2");

}

if (Path.GetExtension(OFD_OLE_2.FileName) == ".accdb")

{

ConnetionStringOLE2 = "Provider=Microsoft.ACE.OLEDB.12.0;" +

@"Data Source=" + TB_OLE_2_Path.Text + "";

MessageBox.Show("Выбрана база данных " + TB_OLE_2_Path.Text + " формата: *" + Path.GetExtension(TB_OLE_2_Path.Text) + "!", "Работа с базами данных (C#) :: OLE # 2");

}

}

}

Событие Click кнопка Показать все записи:

private void B_OLE_2_Read_Click(object sender, EventArgs e)

{

DataSetOLE.Clear(); // Очищаем DataSetOLE перед повторным заполнением из базы данных

ConnectionOLE2 = new OleDbConnection(ConnetionStringOLE2);

try

{

ConnectionOLE2.Open(); // Открываем соединение

MessageBox.Show("Соединение с базой данных " + TB_OLE_2_Path.Text + " успешно открыто!", "Работа с базами данных (C#) :: OLE # 2");

}

catch (Exception ex)

{

MessageBox.Show("Невозможно открыть соединение с базой данных " + TB_OLE_2_Path.Text + " (" + ex.Message + ")!", "Работа с базами данных (C#) :: OLE # 2");

}

// Создаем объект DataAdapter и передаём ему данные запроса

OleDbDataAdapter DataAdapter = new OleDbDataAdapter(); // DataAdapter - посредник между базой данных и DataSet

DataAdapter.SelectCommand = new OleDbCommand(SQL_OLE, ConnectionOLE2);

DataAdapter.Fill(DataSetOLE); // Данные из адаптера поступают в DataSet

DataGridViewOLE.DataSource = DataSetOLE; // Связываем данные с элементом DataGridView

// Закрываем соединение

ConnectionOLE2.Close();

}

Событие Click кнопка Сохранить записи:

private void B_OLE_2_Save_Click(object sender, EventArgs e)

{

try

{

DataAdapter_S.Update((DataTable)DataGridViewOLE_S.DataSource);

MessageBox.Show("Изменения в базе данных D:\\Копии\\LWP10-DB-OLE-Special.accdb успешно внесены!", "Работа с базами данных (C#) :: OLE # 2");

}

catch (Exception ex)

{

MessageBox.Show("Невозможно сохранить изменения в базе данных D:\\Копии\\LWP10-DB-OLE-Special.accdb (" + ex.Message + ")!", "Работа с базами данных (C#) :: OLE # 2");

}

}

Событие Load формы:

private void LWP10Main_Load(object sender, EventArgs e)

{

Directory.CreateDirectory(@"D:\" + @"\Копии");

File.Copy(@"D:\LWP10-DB-OLE-Special.accdb", @"D:\" + @"\Копии\" + @"LWP10-DB-OLE-Special.accdb", true);

ConnetionStringOLE_S = "Provider=Microsoft.ACE.OLEDB.12.0;" +

@"Data Source=D:\Копии\LWP10-DB-OLE-Special.accdb";

ConnectionOLE_S = new OleDbConnection(ConnetionStringOLE_S);

try

{

ConnectionOLE_S.Open(); // Открываем соединение

MessageBox.Show("Соединение с базой данных D:\\Копии\\LWP10-DB-OLE-Special.accdb успешно открыто!", "Работа с базами данных (C#) :: OLE # 2");

}

catch (Exception ex)

{

MessageBox.Show("Невозможно открыть соединение с базой данных D:\\Копии\\LWP10-DB-OLE-Special.accdb (" + ex.Message + ")!", "Работа с базами данных (C#) :: OLE # 2");

}

DataTable DataTable_S = new DataTable();

// Создаём команду

OleDbCommand Command = new OleDbCommand("SELECT * FROM Main_Table", ConnectionOLE_S);

// Создаём адаптер DataAdapter_S: посредник между базой данных и DataSet

DataAdapter_S = new OleDbDataAdapter(Command);

// Создаём построитель команд

// Для адаптера становится доступной команда Update и другие команды

OleDbCommandBuilder CommandBuilder = new OleDbCommandBuilder(DataAdapter_S);

// Данные из адаптера поступают в DataTable_S

DataAdapter_S.Fill(DataTable_S);

// Связываем данные с элементом DataGridView

DataGridViewOLE_S.DataSource = DataTable_S;

// Закрываем соединение

ConnectionOLE_S.Close();

}

Компилируем приложение (Debug) и запускаем:

Рис. 4. 4. Окончательная работа блока: OLE # 2

4. Модификация приложения Windows Forms: XML

Немного общих слов об XML-формате в целом.

Язык XML (расширяемый язык разметки) предназначен для хранения структурированных данных. Данные, хранящиеся в формате XML, можно передавать между программами. Поскольку данные в XML структурированные, в некоторых случаях использование этого формата может заменить базы данных. Кроме этого, у XML есть еще много других полезных применений.

XML весьма похож на другой язык разметки HTML, но в HTML набор тегов фиксирован, и у каждого тега есть свое строго определённое назначение и правила написания. В XML можно определять собственные теги, но при этом все равно нужно соблюдать синтаксические правила языка разметки.

Типичный документ выглядит так:

<?xml version="1.0" encoding="UTF-8"?>

<recipe name="хлеб" preptime="5" cooktime="180">

<title>Простой хлеб</title>

<ingredient amount="3" unit="стакан">Мука</ingredient>

<ingredient amount="0.25" unit="грамм">Дрожжи</ingredient>

<ingredient amount="1.5" unit="стакан">Тёплая вода</ingredient>

<ingredient amount="1" unit="чайная ложка">Соль</ingredient>

<instructions>

<step>Смешать все ингредиенты и тщательно замесить.</step>

<step>Закрыть тканью и оставить на один час в тёплом помещении.</step>

<!-- <step>Почитать вчерашнюю газету.</step> - это сомнительный шаг... -->

<step>Замесить ещё раз, положить на противень и поставить в духовку.</step>

</instructions>

</recipe>

Главным является объявление XML:

<?xml version="1.0" encoding="UTF-8"?>

Объявление отвечает за кодировку документа (кодировка символов), наличие внешних зависимостей и версия документа. В версии 1.0 объявление можно не указывать. В версии 1.1 оно обязательно.

Важнейшее обязательное синтаксическое требование заключается в том, что документ имеет только один корневой элемент (англ. root element) (также иногда называемый элемент документа (англ. document element)). Это означает, что текст или другие данные всего документа должны быть расположены между единственным начальным корневым тегом и соответствующим ему конечным тегом.

Следующий простейший пример -- правильно построенный документ XML:

<book>Это книга: "Книжечка"</book>

Комментарии доступны и здесь. Тэги внутри комментариев не обрабатываются:

<!-- Это комментарий -->

Остальная часть этого XML-документа состоит из вложенных элементов, некоторые из которых имеют атрибуты и содержимое. Элемент обычно состоит из открывающего и закрывающего тегов, обрамляющих текст и другие элементы. Открывающий тег состоит из имени элемента в угловых скобках, например, <step>, а закрывающий тег состоит из того же имени в угловых скобках, но перед именем ещё добавляется косая черта, например, </step>. Имена элементов, как и имена атрибутов, не могут содержать пробелы (иначе эти пробелы заменяются специальной последовательностью символов, что будет показано ниже), но могут быть на любом языке, поддерживаемом кодировкой XML-документа. Имя может начинаться с буквы, подчёркивания, двоеточия. Остальными символами имени могут быть те же символы, а также цифры, дефис, точка.

Содержимым элемента (англ. content) называется всё, что расположено между открывающим и закрывающим тегами, включая текст и другие (вложенные) элементы. Ниже приведён пример XML-элемента, который содержит открывающий тег, закрывающий тег и содержимое элемента:

<step>Замесить ещё раз, положить на противень и поставить в духовку.</step>

Кроме содержания у элемента могут быть атрибуты -- пары имя-значение, добавляемые в открывающий тег после названия элемента. Значения атрибутов всегда заключаются в кавычки (одинарные или двойные), одно и то же имя атрибута не может встречаться дважды в одном элементе. Не рекомендуется использовать разные типы кавычек для значений атрибутов одного тега.

<ingredient amount="3" unit="стакан">Мука</ingredient>

Для данной работы вышеописанных свойств достаточно. Хотя XML обладает ещё целым рядом особенностей. Например, применение тэгов HTML, нетерпимость к перекрывающимся тэгам (один тэг, открывшийся раньше, закрывается раньше другого), наличие специальных символов HTML, пустых элементов и прочее.

Для начала добавим функциональности к уже имеющемся кода нашего приложения. Для этого в начале файла LWP10Main.cs добавим следующее:

using System.Xml; // XML

Найдём:

OleDbDataAdapter DataAdapter = new OleDbDataAdapter(); // DataAdapter - посредник между базой данных и DataSet

DataAdapter.SelectCommand = new OleDbCommand(SQL_OLE, ConnectionOLE2);

DataAdapter.Fill(DataSetOLE); // Данные из адаптера поступают в DataSet

Добавим после:

DataSetOLE.DataSetName = "Главная таблица"; // Устанавливаем название корневого элемента XML-файла

DataSetOLE.WriteXml("D:\\LWP10-DB-XML.xml"); // Запишем данные таблицы в XML-файл

Скомпилируем приложение (Debug) и запустим. В третьем блоке элементов выберем базу данных и нажмём на Прочитать все записи. На диске D появится новый XML-файл: LWP10-DB-XML.xml с содержанием:

Рис. 5. 1. Содержание файла LWP10-DB-XML.xml

Как видно, пробелы в именах тэгов были заменены на символы «_x0020_». В остальном, документ точно повторяет структуру базы данных, из которой были выдраны данные.

Теперь создаём последнюю группу элементов. Она простая:

Рис. 5. 2. Расстановка элементов первой группы (XML)

Здесь у нас четыре кнопки, TextBox и большой ListBox. Также справа внизу элемент SaveFileDialog. Свойства элементов таковы:

Button:

(Name):

B_XML_Search

Text:

Выбрать место сохранения

Size:

200; 23

Button:

(Name):

B_XML_Create

Text:

Создать простой документ

Size:

200; 23

Button:

(Name):

B_XML_Read

Text:

Прочитать простой документ

Size:

200; 23

Button:

(Name):

B_XML_DB

Text:

База данных обоев

Size:

200; 23

TextBox:

(Name):

TB_XML_Path

ReadOnly:

True

ListBox:

(Name):

LB_XML

GroupBox:

(Name):

GB_XML

Text:

XML

SaveFileDialog:

(Name):

SFD_XML

FileName:

XML-Test

InitialDirectory:

D:\

Filter

XML-файл|*.xml

Самая нижняя кнопка (База данных обоев) является кнопкой, открывающей новую форму, о чём пойдём немного ниже.

Событие Click кнопки Выбрать место сохранения:

private void B_XML_Search_Click(object sender, EventArgs e)

{

SFD_XML.ShowDialog();

TB_XML_Path.Tex...


Подобные документы

  • Автоматизация сбора и обработки данных. Основы, таблицы и средства для работы с базами данных. Инструментальные средства и компоненты. Технология создания приложения. Работа с псевдонимами и со связанными таблицами. Система управления базами данных.

    методичка [1,5 M], добавлен 06.07.2009

  • Разработка и освоение в современном производстве информационной подсистемы. Создание базы данных в среде MS SQL Server 2008 и приложения в среде MS Visual Studio 2012. Процесс ввода при выборе пунктов меню. Заполнение формы с критериями на фильтрацию.

    отчет по практике [834,4 K], добавлен 27.11.2013

  • Разработка приложения для осуществления работы с медицинскими данными с последующей их визуализацией. Изучение типов данных и свойств полей Access. Компоненты наборов данных. Структура базы данных для клиники. Экранные формы для отображения справочников.

    курсовая работа [1,5 M], добавлен 14.08.2014

  • Классификация баз данных. Выбор системы управления базами данных для создания базы данных в сети. Быстрый доступ и получение конкретной информации по функциям. Распределение функций при работе с базой данных. Основные особенности иерархической модели.

    отчет по практике [1,2 M], добавлен 08.10.2014

  • Приложения, позволяющие работать со списками и базами данных. MS Access - классическая система управления базами данных. Понятие списков и данных, особенности их создания в среде MS Office. Расчёт исходящих остатков данных в табличном процессоре MS Excel.

    курсовая работа [1,2 M], добавлен 25.04.2013

  • Сущность, понятие баз данных. Краткая характеристика MS Access. Обеспечение сохраняемости объектов. Архитектура Object Data Management Group. Объектные расширения реляционных СУБД. Концептуальные особенности систем управления активными базами данных.

    курсовая работа [48,1 K], добавлен 17.05.2013

  • Проектирование системы управления базами данных. Особенности реализации в MS SQL. Разработка пользовательского интерфейса. Тестирование и отладка приложения. Руководство пользователя и системного администратора. Анализ и методы разработки приложений.

    курсовая работа [867,9 K], добавлен 16.07.2013

  • Разработка программного продукта - приложения, позволяющего заносить данные анкетирования в базу данных MS SQL. Описание логики работы приложения, особенности пользовательского интерфейса. Формы просмотра анкет, описание процедур и функций программы.

    курсовая работа [1,2 M], добавлен 16.08.2012

  • Описание визуальных компонентов. Использование чужеродных компонентов-CTIVEX, компонент Grid. Набор свойств, которые имеет каждый визуальный компонент, их установка программно или при проектировании приложения. Примеры приложения с компонентами.

    реферат [976,6 K], добавлен 19.10.2008

  • Исследование алгоритма взаимодействия пользователя с сервером, на котором находится база данных. Реализация безопасности информационной системы с помощью возможностей программного комплекса Visual Studio. Анализ особенностей интерфейса веб-приложения.

    курсовая работа [1,3 M], добавлен 17.06.2017

  • Объектно-ориентированная технология создания программ. Среда разработки Visual Studio.NET. Особенности среды Microsoft Visual Studio 2010. Приложения C# для расчетов по формулам, консольный ввод-вывод. Форматирование значений данных. Программы с циклами.

    методичка [2,1 M], добавлен 11.09.2014

  • Выполнение операций, хранения, редактирования, систематизации данных. Рассмотрение подсистем разрабатываемой системы управления базами данных продуктового магазина. Разработка алгоритма функционирования системы и приложения для работы с базой данных.

    курсовая работа [399,1 K], добавлен 26.08.2019

  • Методика и основные этапы проектирования логической и физической модели базы данных. Реализация спроектированной модели в системе управления базами данных, принципы создания и апробация специального клиентского приложения для работы данной программы.

    курсовая работа [1,3 M], добавлен 27.06.2013

  • Теоретические сведения и основные понятия баз данных. Системы управления базами данных: состав, структура, безопасность, режимы работы, объекты. Работа с базами данных в OpenOffice.Org BASE: создание таблиц, связей, запросов с помощью мастера запросов.

    курсовая работа [3,2 M], добавлен 28.04.2011

  • Создание базы данных при помощи СУБД, разработка собственного приложения. Информационно-логическая модель рекламного агентства. Структура реляционной базы данных в Access. Заполнение таблиц информацией. Структура приложения и взаимодействия форм.

    курсовая работа [12,6 M], добавлен 17.06.2014

  • Рассмотрение структуры и схемы базы данных. Описание таблиц и архитектура приложения информационной системы "Музыкальный каталог". Изучение интерфейса пользователя: страниц регистрации, главной и страницы поиска. Приложение для работы с базами данных.

    курсовая работа [821,2 K], добавлен 27.07.2014

  • Проектирование базы данных для автоматизации деятельности по учету автотранспорта ГИБДД Вяземского района. Выбор инструментария для разработки базы данных и приложения по её ведению. Описание интерфейса и физической структуры приложения баз данных.

    курсовая работа [2,2 M], добавлен 28.06.2011

  • Программные продукты компании Microsoft: Access, Visual FoxPro7.0, dBASE. Возможности интеграции, совместной работы и использования данных. Системы управления базами данных (СУБД), их основные функции и компоненты. Работа с данными в режиме таблицы.

    курсовая работа [805,5 K], добавлен 15.12.2010

  • Логическая и физическая модели базы данных. Запрет на содержание неопределенных значений. Размещение базы данных на сервере. Реализация клиентского приложения управления базой данных. Модульная структура приложения. Основные экранные формы приложения.

    курсовая работа [1,4 M], добавлен 13.06.2012

  • Определения теории баз данных (БД). Элементы приложения информационных систем. Реляционные модели данных. Задача систем управления распределенными базами данных. Средства параллельной обработки запросов. Использование БД при проведении инвентаризации.

    курсовая работа [518,9 K], добавлен 01.05.2015

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.