Работа с базами данных — 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