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

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

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

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

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

Почему существует несколько классов для работы с одним и тем же (в частности в XML)? На этот вопрос, есть два ответа: «на вкус и цвет все фломастеры разные» и «в зависимости от предоставляемой функциональности один класс может оказаться удобнее в той или иной ситуации».

Несколько причин, почему стоит использовать классы для генерации XML документа, а не создавать его вручную:

1. Практически нулевой риск создать неправильный XML документ.

2. Можно задать форматирование (отступы и прочее) XML документа (очень сильно улучшает читаемость).

Наиболее подходящим для формирования XML-документа «за раз» является класс XmlWriter. Плюсы данного класса:

1. Форматирование результирующего XML документа.

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

Для форматирования выводимого XML документа в XmlWriter используется класс XmlWriterSettings.

Используя функцию WriteElementString, тэг не только открывается, в него записываются данные, но и тут же закрывается, поэтому добавить атрибут к такому элементу НЕЛЬЗЯ! Для решения данной проблемы нужно использовать WriteStartElement, WriteAttributeString, WriteEndElement.

Для чтения XML-документа предусмотрен класс XMLReader, но он крайне не удобен, потому что осуществляет последовательное считывание и не позволяет «прыгать через»/обращаться сразу к нужному элементу.

Чтение и редактирование удобно производить через класс XmlDocument.

Из чего состоит XML-документ:

1. Строка вида <?xml … ?>

2. Родительский элемент (единственный).

3. Дальше, внутри родительского элемента располагаются элементы-потомки (child'ы) и далее по иерархии.

Теперь давайте рассмотрим как изменять уже имеющийся XML-документ?

Для вставки элемента в иерархию XML-документа необходимо создать элемент типа XmlNode и задать его родителя, делается это следующим образом:

// Создаём node

// book - имя узла

XmlNode node = xmlDoc.CreateElement("book");

// Добавляем его в качестве ребенка

parentNode.AppendChild(node);

Удаление узла?

// Удаление узла

parentNode.RemoveChild(node);

Работа с атрибутами:

// Создаём новый атрибут

// genre - имя атрибута

XmlAttribute newAttr = doc.CreateAttribute("genre");

newAttr.Value = "novel"; // Задаём его значение

// Добавляем атрибут в коллекцию атрибутов элемента

node.SetNamedItem(newAttr);

// Удаляем атрибут

node.Attributes.RemoveNamedItem("genre");

// Изменяем значение атрибута

XmlAttributeCollection Attribs = node.Attributes;

XmlAttribute attr = (XmlAttribute)Attribs.GetNamedItem("genre");

attr.Value = "fiction";

Настало время разработать более-менее полезную функциональность. Используем возможности XML и сделаем на основе него полноценную базу данных.

Будем использовать загрузку данных из XML файла в DataSet, отметив, что после загрузки данных, доступ к данным ничем не отличается от работы с данными при их загрузке из таблиц БД.

Для XML справедливо: «Содержимым элемента (content) называется всё, что расположено между открывающим и закрывающим тегами. Это текст, вложенные элементы, комментарии и т.п.». Все спецификации XML документов подчёркивают, что именно текст, то, что является содержимым документа. Все средства для работы с XML документами, в том числе и методы класса XmlDocument, также ориентированы на текст (CreateTextNode и т.п.).

Из сказанного можно сделать вывод: хранить двоичные данные можно, только если они будут представлены как текстовые строки. Однако, прямое преобразование всего массива байт (двоичных данных) в текстовую строку не будет решением в силу того, что возможно присутствие в двоичном коде значений, совпадающих со служебными символами кодировки строк и значений, равных завершению строки. Как результат - мы сможем поместить в контент тэга только часть строки (до первого совпадения двоичного символа со значением окончания строки) при возможном отображении помещенного кода на нескольких строках XML файла для одного содержимого контента. Следовательно, строка должна формироваться и присваиваться значению контента как единое целое. Способы выполнить это могут быть разные, от посимвольного преобразования байт в значение char и последовательного добавления результата в содержимое контента (медленный способ), до использования StringBuilder (быстрый способ).

Наиболее часто хранение двоичных данных связано с задачей хранения рисунков (хотя приведенный ниже код будет равно хорошо работать и при использовании его для хранения в виде двоичных данных Web-страниц, Word или Excel-документов и прочее). Содержимое файла рисунка: массив шестнадцатеричных символов. Как следствие, и код представления рисунка в content опирается на шестнадцатеричное отображение строк.

Так что же это будет за функциональность? Приложение будет по указанному через диалог изображению создавать запись в базе данных (XML-файл), куда будет помещаться как сведения об изображении, так и само изображение в виде длинной строки символов. Также по номеру (ID рисунка) из базы можно будет восстановить это изображение и просмотреть его. Изображения можно будет только добавлять в базу, и просматривать добавленное уже из базы. Для этой функциональности у нас предусмотрена кнопка База данных обоев. А также заранее заготовленный файл Wallpapper-DB.xml с содержанием:

<?xml version="1.0" encoding="windows-1251"?>

<NewDataSet>

<wallpapper>

<id></id>

<name></name>

<pichash></pichash>

<picext></picext>

<size></size>

</wallpapper>

</NewDataSet>

Немного о тэге «NewDataSet». Поскольку мы будем работать с DataSet, то при сохранении содержимого DataSet в XML файл, данный тэг добавляется автоматически. Также этот тэг является параметром свойства DataSetName.

Первым делом нам нужна новая форма. Добавим её в наше приложение: Проект -> Добавить новый элемент... (Ctrl+Shift+A). В открывшемся окне ищем Форма Windows Forms, в поле Имя ниже вводим LWP10Wallpapper.cs:

Свойства формы:

(Name):

LWP10Wallpapper

Text:

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

Size:

500; 500

Расставим элементы как показано на рисунке ниже:

Рис. 5. 4. Расстановка элементов в новой форме

Основным элементом здесь является PictureBox (), который разместим в самом центре (пунктирный прямоугольник). Остальные элементы это три кнопки, четыре TextBox, два «именных» Label'а слева под рисунком (Имя файла: и Разрешение рисунка:).

Свойства элементов:

Button:

(Name):

B_OPEN

Text:

Выбрать рисунок

Size:

200; 23

Button:

(Name):

B_SEARCH

Text:

Выбрать рисунок для добавления

Size:

200; 23

Button:

(Name):

B_SAVE

Text:

Сохранить рисунок в базе данных

Size:

200; 23

TextBox:

(Name):

TB_NUMBER

TextBox:

(Name):

TB_FORMAT

TextBox:

(Name):

TB_SIZE

ReadOnly:

True

TextBox:

(Name):

TB_NAME

PictureBox:

(Name):

PB_MAIN

OpenFileDialog:

(Name):

OFD_FIND

InitialDirectory:

D:\

Filter

GIF-файлы|*.gif|BMP-файлы|*.bmp|JPEG-файлы|*.jpg

Label:

(Name):

L_NAME

Text:

Имя файла:

Label:

(Name):

L_SIZE

Text:

Разрешение рисунка:

Обработчик события Click для кнопки База данных обоев главной формы выглядит так:

private void B_XML_DB_Click(object sender, EventArgs e)

{

LWP10Wallpapper DBWallpapper = new LWP10Wallpapper();

DBWallpapper.ShowDialog();

}

В начало файла LWP10Wallpapper.cs добавим следующие строчки:

using System.Xml;

using System.IO;

using System.Drawing.Imaging;

В этом же файле найдём:

public partial class LWP10Wallpapper : Form

{

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

// Директория выполнения приложения

private string String_Path = String.Empty;

XmlDocument XML;

// Классы для работв с XML-документом как с объектом базы данных

DataTable WallpapperDataTable = null;

DataSet WallpapperDataSet = null;

Событие Load нашей дочерней формы:

private void LWP10Wallpapper_Load(object sender, EventArgs e)

{

//Path = Directory.GetCurrentDirectory(); // Текущая директория, из которой запущено приложения

String_Path = @"D:\\";

L_NAME.Text = "Имя рисунка: ";

L_SIZE.Text = "Разрешение рисунка: ";

// Инициализируем объект StreamReader, считывающий символы из потока байтов в определённой кодировке

using (StreamReader SR = new StreamReader(String_Path + @"\Wallpapper-DB.xml", System.Text.Encoding.UTF8))

{

WallpapperDataSet = new DataSet();

WallpapperDataSet.ReadXml(SR, XmlReadMode.Auto); // Считываем XML-схему и данные в DataSet

WallpapperDataTable = WallpapperDataSet.Tables[0];

}

}

Обратим внимание на параметр метода ReadXml: XmlReadMode.Auto - он позволит DataSet правильно создать схему с учётом значений мегатэгов, а также на значение Encoding.UTF8. Причина использования именно этой кодировки: DataSet по умолчанию будет сохранять данные в кодировке UTF-8.

В самом этом коде инициализируются основные пути к файлу базы данных, а также создаётся объект StreamReader (который занимается считыванием символов с файла в определённой кодировке, в данном случае UTF-8), после чего на основе XML-схемы формируется DataSet (столбцы таблицы).

Событие Click кнопки Выбрать рисунок для добавления:

private void B_SEARCH_Click(object sender, EventArgs e)

{

OFD_FIND.InitialDirectory = String_Path;

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

{

PB_MAIN.Image = Image.FromFile(OFD_FIND.FileName);

TB_FORMAT.Text = Path.GetExtension(OFD_FIND.FileName);

TB_NAME.Text = Path.GetFileNameWithoutExtension(OFD_FIND.FileName);

TB_SIZE.Text = PB_MAIN.Image.Width.ToString() + "x" + PB_MAIN.Image.Height.ToString();

}

}

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

private void B_SAVE_Click(object sender, EventArgs e)

{

// Сохранять не будем - если что-то не ввели

if (PB_MAIN.Image == null) return;

if (TB_NAME.Text == "") return;

if (TB_FORMAT.Text == "") return;

if (TB_SIZE.Text == "") return;

// Строки для метода SELECT в XML-документе

DataRow[] datarows = null;

// Ищем максимальное ID в DataSet (в DataTable)

string s = string.Empty;

try

{

datarows = WallpapperDataTable.Select("id=max(id)");

s = datarows[0]["id"].ToString();

}

catch (Exception ex)

{

MessageBox.Show(ex.Message, "Работа с базами данных (C#) :: База данных обоев");

}

if (s == "" || s == string.Empty) // Если база данных пустая, то...

{

s = "0";

}

// Для формирования строки рисунка создаём StringBuilder

StringBuilder SB = new StringBuilder();

int i = int.Parse(s) + 1; // Если база пустая, то начинаем с 1, иначе, с максимального номера + 1

// Создаём новую строку для WallpapperDataSet

DataRow datarow = WallpapperDataSet.Tables[0].NewRow(); // Формируем DataRow на основе DataSet

// Присваиваем значения столбцам строки

datarow[0] = Convert.ToString(i);

datarow[1] = TB_NAME.Text.Trim();

// Формируем строковое представление рисунка

using (MemoryStream MS = new MemoryStream())

{

PB_MAIN.Image.Save(MS, ImageFormat.Gif); // Сохраняем изображение в потом MemoryStream, расширение *.gif

byte[] b = new byte[MS.Length]; // 8-битное число (массив) длины потока в байтах

//memorystream.Read(b, 0, (int)memorystream.Length);

b = MS.GetBuffer(); // Присваиваем byte b массив байтов потока

s = string.Empty;

foreach (Byte zb in b)

{

int a = (int)zb;

SB.Append(a.ToString("X2")); // Формируем окончательную строку (путём добавления) из данных массива байтов в шестнадцатеричном виде (X2) (шестнадцатеричное представление каждого байта рисунка)

//value = 123456789;

//Console.WriteLine(value.ToString("X"));

// Выведет: 75BCD15

//Console.WriteLine(value.ToString("X2"));

// Выведет: 75BCD15

}

datarow[2] = Convert.ToString(SB); // Отправляем всю строку в столбец pichash нашей базы данных

}

datarow[3] = TB_FORMAT.Text.Trim();

datarow[4] = TB_SIZE.Text.Trim();

WallpapperDataSet.Tables[0].Rows.Add(datarow); // Формируем всю запись базы данных в DataSet

// Удаляем строку с пустыми значениями, которые при первоначальной

// загрузке были использованы для формирования схемы

if (i == 1)

{

WallpapperDataSet.Tables[0].DefaultView.AllowDelete = true;

WallpapperDataSet.Tables[0].DefaultView.Delete(0);

}

PB_MAIN.Image = null;

TB_SIZE.Text = "";

TB_FORMAT.Text = "";

TB_NAME.Text = "";

// Сохраняем данные

WallpapperDataSet.WriteXml(String_Path + @"\Wallpapper-DB.xml", XmlWriteMode.WriteSchema);

WallpapperDataSet = new DataSet();

// Вновь загружаем сохраненные данные

WallpapperDataSet.ReadXml(String_Path + @"\Wallpapper-DB.xml", XmlReadMode.Auto);

WallpapperDataTable = WallpapperDataSet.Tables[0];

}

Этот код выполняем основные функции по сохранению данных выбранного рисунка в базе данных. Вначале проверяется заполнение всех TextBox'ов (кроме верхнего). Если данные были введены и рисунок указан, далее проверяется наличие в базе ещё добавленных записей (по максимально числу в тэгах <id>X</id>). Если БД пустая, начинаем заполнение с номера 1. После чего инициализируется объект StringBuilder и производятся основные действия по переведению байтов рисунков в строчное представление для сохранение в базе. Данные TextBox'ов также заносятся в базу.

Теперь инициализируем извлечение данных из базы. Событие KeyPress для TB_SEARCH (верхний TextBox):

private void TB_NUMBER_KeyPress(object sender, KeyPressEventArgs e)

{

// Введённые символы должны быть только цифрами, иначе ввода не будет (символ не введеётся)

if (!Char.IsDigit(e.KeyChar))

{

e.Handled = true;

}

}

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

private void B_OPEN_Click(object sender, EventArgs e)

{

if (TB_NUMBER.Text.Trim() != "")

{

TB_NAME.Text = "";

TB_FORMAT.Text = "";

TB_SIZE.Text = "";

PB_MAIN.Image = null;

GetPicture(TB_NUMBER.Text.Trim()); // Отправляем номер функции, которая вытащит из XML-документа все данные

}

}

И код функции для выбора по номеру, вводимому в TB_NUMBER:

private void GetPicture(string X)

{

DataRow[] datarows = null;

try

{

datarows = WallpapperDataTable.Select("id=" + X); // Получаем все данные DataTable по ключу <id>X</id>

}

catch (Exception ex)

{

MessageBox.Show(ex.Message, "Работа с базами данных (C#) :: База данных обоев");

return;

}

if (datarows.Length > 0) // Не пусто ли?

{

foreach (DataRow datarow in datarows) // Перебираем все столбцы записи

{

L_NAME.Text = "Имя файла: " + datarow["name"].ToString();

string s3 = datarow["pichash"].ToString();

L_SIZE.Text = "Разрешение рисунка: " + datarow["size"].ToString();

using (MemoryStream MS = new MemoryStream())

{

for (int i = 0; i < s3.Length / 2; i++) // Обходим половину знаков строки из <pichash>s3</pichash> в верхнем цикле, макс. i = 249 если s3.Length = 500

{

if (i * 2 + 1 < s3.Length) // Последнее условие: 249 * 2 + 1 < 500

{

string s02 = Convert.ToString(s3[i * 2]); // Чётные символы (посл.: 249 * 2 = 498 символ, предпоследний в строке)

string s03 = Convert.ToString(s3[i * 2 + 1]); // Нечётные символы (посл.: 249 * 2 + 1 = 499 символ, последний в строке)

string s04 = s02 + s03; // Объединяем в одну строку (A + B)

int a = int.Parse(s04, System.Globalization.NumberStyles.HexNumber); // 32 разряда получаем из двух 16 разрядных чисел юникода (A + B)

MS.WriteByte(Convert.ToByte(a)); // Восстанавливает один байт за проход (из 32 разрядного представления знакового целого числа), всего 250 проходов по два символа за раз

}

}

PB_MAIN.Image = Image.FromStream(MS); // Восстанавливаем рисунок (создаём рисунок из потока байтов)

}

}

}

}

Все данные для одного рисунка по номеру вытаскиваются этим кодом из файла базы данных в объект DataTable. Данные выводятся из файла через массив DataRow[] с непосредственным выбором по именам узлов. Из строки символов <pichash>...</pichash> формируются байты рисунка и затем передаются элементу PictureBox.

Готово. Можно компилировать и проверять работоспособность.

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

Компилируем приложение (Release) и запускаем. Результат работы показан ниже (Рис. 6. 1):

Рис. 6. 1. Модифицированное приложение Windows Forms: результат работы приложения по сохранению рисунка в базе данных (сохранение выбранного рисунка в базе)

Рис. 6. 2. Модифицированное приложение Windows Forms: результат работы приложения по сохранению рисунка в базе данных (выбор рисунка из базы по номеру)

Содержание базы данных (файл Wallpapper-DB.xml):

Рис. 6. 3. Содержимое файла Wallpappaer-DB.xml: четыре рисунка, длинные строчки <pichash>...</pichash> содержат символы рисунков (окончания строк не видны)

Недостаток хранения данных в XML-файлах: длина строки, хотя это не значит, что при хранении в таблицах баз данных мы выиграем в объёме или скорости обработки (скорее наоборот проиграем за счёт сетевого трафика).

Если имена рисунков4 будут на русском (символы кириллицы), они будут корректно сохранены в базе.

ПРИМЕЧАНИЕ № 4: Точно таким образом можно сохранять и восстанавливать любые данные (Web-страницы, Word или Excel-документы и прочее). Подобный способ хранения может быть полезен, для решения многих задач связанных с хранением и передачей информации, в том числе и конфиденциальной (например, после преобразования файла всю строку можно закодировать паролем через MD5-хэш).

Если по каким-то причинам русские символы не читаются, сделаем следующее:

Найдём:

using (StreamReader SR = new StreamReader(String_Path + @"\Wallpapper-DB.xml", System.Text.Encoding.UTF8))

И заменим:

using (StreamReader SR = new StreamReader(String_Path + @"\Wallpapper-DB.xml", System.Text.Encoding.Default))

Найдём:

// Сохраняем данные

WallpapperDataSet.WriteXml(String_Path + @"\Wallpapper-DB.xml", XmlWriteMode.WriteSchema);

WallpapperDataSet = new DataSet();

// Вновь загружаем сохраненные данные

WallpapperDataSet.ReadXml(String_Path + @"\Wallpapper-DB.xml", XmlReadMode.Auto);

WallpapperDataTable = WallpapperDataSet.Tables[0];

Заменим:

XML = new XmlDocument();

XML.InnerXml = WallpapperDataSet.GetXml();

XmlDeclaration XMLDeclaration = XML.CreateXmlDeclaration("1.0", "windows-1251", "yes");

XML.InsertBefore(XMLDeclaration, XML.DocumentElement);

XML.Save(String_Path + @"\Wallpapper-DB.xml");

WallpapperDataSet = new DataSet();

WallpapperDataSet.ReadXml(String_Path + @"\Wallpapper-DB.xml", XmlReadMode.Auto);

WallpapperDataTable = WallpapperDataSet.Tables[0];

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

Получившуюся программу (LWP10DB.exe), собранную из кусков кода приведённых в данной лабораторной работе, три базы данных (LWP10-DB-ODBC.mdb, LWP10-DB-OLE.accdb и LWP10-DB-OLE-Special.accdb), а также XML-файл для базы данных Wallpapper-DB.xml, использованные в данной работе можно загрузить по ссылке в конце этого материала.

Размещено на Allbest.ru

...

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

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

    методичка [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-файлы представлены только в архивах.
Рекомендуем скачать работу.