клиентское приложение к базе данных

Oracle Call Interface: как написать клиентское приложение на Си

Хабр, привет! Вообще-то я не настоящий сварщик программист, я системный администратор и администратор БД. Поэтому, когда несколько лет назад передо мной встала задача написать небольшое клиентское приложение для автоматизации рутинных процедур, я потратил немало времени, чтобы разобраться в этом вопросе. Если вдруг у вас примерно такая же ситуация, надеюсь, эта статья сэкономит ваше время и силы.

Что нужно?

Определившись с требованиями получаем следующее.

Желательно для бинарника:

Небольшой размер исполняемого файла.

Корректная обработка случаев, когда OCI-библиотека недоступна

Необходимо для бинарника:

Работать утилита должна на любом компьютере с ОС Windows выше Windows 7 или Windows Server 2008 без установки каких-либо фреймворков и Runtime Environment. Должен быть установлен только какой-то из продуктов Oracle, включающий OCI-библиотеку.

Очень желательно для исходников:

Какую технологию использовать?

Oracle предлагает следующие варианты:

Пишем простое приложение

Подключение библиотеки

Для того, чтобы использовать OCI функции в своей программе, нужно подключить библиотеку и получить адреса функций:

Подключение библиотеки и получений адресов функций

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

Определения функций можно найти либо на https://docs.oracle.com в Call Interface Programmer’s Guide для вашей версии библиотеки либо в заголовочном файле %ORACLE_HOME%\OCI\include\ociap.h

Инициализация окружения

Далее нам нужно инициализировать структуры OCIEnv (хендл окружения) и OCIError (хендл для обработки ошибок).

Создание сессии

Для каждой сессии нам нужно инициализировать хендл OCISvcCtx, именно он используется для выполнения sql-выражений. Я, руководствуясь демонстрационными примерами от Oracle, создавал сессии так:

Уже в процессе написания статьи, я увидел, что для этих же целей можно использовать функцию OCILogon2. Судя по всему, это намного проще и удобнее. А главное, нужно меньше писать кода. Но мы уже оставим все, как есть.

Вставляем данные

Пример функции для загрузки данных в базу:

В целях увеличения быстродействия и экономии ресурсов базы в случае множественных инсертов нужно вначале подготовить выражение с заполнителями типа :id и :string, связать их с соответствующими переменными, и затем изменять значение переменных и выполнять выражение.

Получаем данные

Код для получения данных из базы:

При получении данных поступаем аналогично, привязываем переменные с запрошенными полями в селекте, выполняем выражение и затем в цикле одну за другой получаем строки

Закрываем сессию

После нужных операции нужно закрыть сессию:

Закрываем окружение

После того, как взаимодействие с базой больше не нужно, закрываем окружение:

Итоги работы

Вот ссылки на проекты на гитхабе для Windows(Visual Studio) и Linux(NetBeans)

Что утилита делает

Утилита подключается к базе данных, создает таблицу simple_table, заполняет ее данными, получает из нее данные и удаляет таблицу.

Как скомпилировать

Как и было запланировано с самого начала, для компиляции утилиты не требуется никаких дополнительных файлов и библиотек. Для работы, само собой, требуется установленный Oracle Client либо Instant Oracle Cllient, главное, чтобы была доступна OCI-библиотека.

Источник

Руководство: создание приложения базы данных клиентов

В этом руководстве создается простое приложение для управления списком клиентов. Это позволяет выбрать основные понятия для корпоративных приложений в UWP. Вы узнаете, как:

Отправной точкой для этого руководства является одностраничное приложение с минимальным пользовательским интерфейсом и функциональностью на основе упрощенной версии примера приложения для работы с базой данных Customer Orders. Он написан на C# и XAML, и мы ожидаем, что у вас есть базовое знакомство с обоими языками.

клиентское приложение к базе данных

Предварительные требования

После клонирования или скачивания репозитория можно изменить проект, открыв кустомердатабасетуториал. sln с Visual Studio.

Ознакомьтесь с примером базы данных «полный заказ для клиентов «, чтобы увидеть приложение, на котором основано это руководство.

Часть 1. интересующий вас код

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

Представления

Кустомерлистпаже. XAML — это представление приложения, которое определяет пользовательский интерфейс для отдельной страницы в этом учебнике. Каждый раз, когда необходимо добавить или изменить визуальный элемент в пользовательском интерфейсе, это можно сделать в этом файле. В этом руководстве описано, как добавить следующие элементы:

Модели представлений

Виевмоделс\кустомерлистпажевиевмодел.КС — это место, где находится основная логика приложения. Каждое действие пользователя, выполненное в представлении, будет передано в этот файл для обработки. В этом руководстве вы добавите новый код и реализуем следующие методы:

CustomerViewModel — это программа-оболочка для информации клиента, которая отслеживает, был ли он недавно изменен. В этот класс не нужно добавлять ничего, но в него будет ссылаться другой код, который вы добавите в другое место.

Дополнительные сведения о создании образца см. в обзоре структуры приложения.

Часть 2. Добавление элемента управления DataGrid

Прежде чем приступить к работе с данными клиента, необходимо добавить элемент управления пользовательского интерфейса для вывода этих клиентов. Для этого мы будем использовать готовый элемент управления раддатагрид стороннего производителя. пакет Telerik. UI. for. UniversalWindowsPlatform NuGet уже включен в этот проект. Давайте добавим сетку в наш проект.

Под панелью команд в главной релативепанел представления добавьте элемент управления раддатагрид с некоторыми базовыми параметрами конфигурации:

Вы добавили сетку данных, но для ее вывода нужны данные. Добавьте в него следующие строки кода:

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

клиентское приложение к базе данных

Часть 3. чтение клиентов

В виевмоделс\кустомерлистпажевиевмодел.КС Обновите метод жеткустомерлистасинк следующим кодом:

Запустите приложение. Теперь вы увидите сетку данных, в которой отображается список клиентов.

клиентское приложение к базе данных

Часть 4. изменение клиентов

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

Сначала объявите, что виевмоделс\кустомерлистпажевиевмодел.КС реализует интерфейс INotifyPropertyChanged :

Затем в основном тексте класса добавьте следующее событие и метод:

Обновите метод задания для селектедкустомер с помощью этого вызова функции:

В виевс\кустомерлистпаже.ксамл добавьте свойство селектедкустомер в сетку данных.

Это связывает выбор пользователя в сетке данных с соответствующим объектом Customer в коде программной части. Режим привязки TwoWay позволяет отражать изменения, внесенные в пользовательском интерфейсе, в этот объект.

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

клиентское приложение к базе данных

Часть 5. обновление клиентов

Теперь, когда вы можете просматривать и изменять клиентов, необходимо иметь возможность отправлять изменения в базу данных и получать обновления, внесенные другими пользователями.

В этом коде используется свойство виевмоделс\кустомервиевмодел.КС , которое автоматически обновляется при каждом изменении клиента. Это позволяет избежать ненужных вызовов и отправлять изменения только от обновленных клиентов в базу данных.

Часть 6. Создание нового клиента

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

Обновление кода программной части

Добавьте новое закрытое поле и общедоступное свойство в виевмоделс\кустомерлистпажевиевмодел.КС. Он будет использоваться для управления отображением панели.

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

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

Добавьте новое закрытое свойство фиенд и public в ViewModel для хранения только что созданного клиента.

Добавьте следующую строку кода в качестве конечной строки в методе задания для аддингневкустомер:

Обновление пользовательского интерфейса

Вернитесь к виевс\кустомерлистпаже.ксамл и добавьте StackPanel со следующими свойствами между панелью CommandBar и сеткой данных:

Атрибут x:Load гарантирует, что эта панель отображается только при добавлении нового клиента.

Внесите следующее изменение в расположение сетки данных, чтобы убедиться, что она перемещается вниз при появлении новой панели:

Добавьте простую кнопку на новую панель стека, чтобы сохранить только что созданного клиента:

Обновите панель команд, чтобы при отображении панели стека были отключены стандартные кнопки Создать, удалить и обновить.

Запустите приложение. Теперь можно создать клиента и ввести его данные на панели стека.

клиентское приложение к базе данных

Часть 7. Удаление клиента

Перейдите по адресу виевмоделс\кустомерлистпажевиевмодел.КС и обновите метод делетеандупдатеасинк :

В виевс\кустомерлистпаже.ксамл обновите панель стека, чтобы добавить нового клиента, чтобы он содержал вторую кнопку:

Запустите приложение. Теперь можно удалить клиентов либо в сетке данных, либо на панели стека.

клиентское приложение к базе данных

Заключение

Поздравляем! Теперь, когда все это сделано, ваше приложение будет иметь полный спектр операций локальной базы данных. Вы можете создавать, читать, обновлять и удалять клиентов в пользовательском интерфейсе, и эти изменения сохраняются в базе данных и сохраняются в разных запусках приложения.

Теперь, когда все готово, учитывайте следующее.

Если у вас возникла проблема, можно продолжить.

дальнейшие действия: Подключение к удаленной базе данных

Мы предоставили пошаговое руководство по реализации этих вызовов в локальной базе данных SQLite. Но что если вместо этого вы хотите использовать удаленную базу данных?

если вы хотите сделать это, вам потребуется собственная учетная запись Azure Active Directory (AAD) и возможность размещения собственного источника данных.

Необходимо добавить проверку подлинности, функции для управления вызовами RESTFUL, а затем создать удаленную базу данных для взаимодействия. В образце полной базы данных Customer Orders имеется код, на который можно ссылаться для каждой необходимой операции.

Параметры и конфигурация

Необходимые действия для подключения к собственной удаленной базе данных приведены в файле сведений примера. Вам понадобится выполнить следующие процедуры.

Аутентификация

Необходимо создать кнопку для запуска последовательности проверки подлинности, а также всплывающее окно или отдельную страницу для сбора сведений о пользователе. После создания этого кода необходимо предоставить код, который запрашивает сведения о пользователе и использует его для получения маркера доступа. пример базы данных Customer orders заключает Microsoft Graph вызовы в библиотеку вебаккаунтманажер для получения маркера и выполнения проверки подлинности для учетной записи AAD.

Вызовы RESTFUL

Вам не потребуется изменять код, добавленный в этом руководстве, для реализации вызовов RESTFUL. Вместо этого необходимо выполнить следующие действия.

После выполнения всех трех этапов вы сможете пройти проверку подлинности в вашей учетной записи AAD с помощью приложения. Вызовы функции RESTFUL к удаленной базе данных будут заменять локальные вызовы SQLite, но взаимодействие с пользователем должно быть одинаковым. Если вы еще амбициозные, можно добавить страницу параметров, чтобы разрешить пользователю динамически переключаться между ними.

Источник

Создание клиентского приложения к базе данных

Основные понятия и виды баз данных. Виды моделей данных. Основные понятия реляционных баз данных. Обзор СУБД Microsoft SQL Server. Разработка клиентского приложения к базе данных. Технология ADO NET. Создание базы данных в Microsoft SQL Server 2005.

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

клиентское приложение к базе данных

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

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

МИНИСТЕРСТВО КУЛЬТУРЫ РОССИЙСКОЙ ФЕДЕРАЦИИ

Федерального государственного образовательного учреждения

высшего профессионального образования

«Московский государственный университет культуры и искусств»

Кафедра прикладной информатики

СОЗДАНИЕ КЛИЕНТСКОГО ПРИЛОЖЕНИЯ К БАЗЕ ДАННЫХ

Студент группы 3-И2

3.1 Технология ADO NET


3.2 Создание базы данных в Microsoft SQL Server 2005


3.3 Создание клиентского приложения


Введение


Цель исследования: спроектировать процесс тестирования программного обеспечения.


Задачи исследования:


— найти и изучить материал по тестированию программного обеспечения;


— разработать тесты программного обеспечения;


— спроектировать процесс тестирования программного обеспечения;


Объект исследования: разработка программного обеспечения.


Предмет исследования: тестирование программного обеспечения.


Тип данного исследования: разработка.


1. Основные понятия и виды баз данных


1.1 Базы данных


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


Неструктурированными называют данные, записанные, например, в текстовом файле.


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

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

Существует большое количество БД их можно классифицировать следующим образом.

По технологии обработки данных базы данных подразделяются на централизованные и распределенные.

Централизованная база данных хранится в памяти одной вычислительной системы. Если эта вычислительная система является компонентом сети ЭВМ, возможен распределенный доступ к такой базе. Такой способ использования баз данных часто применяют в локальных сетях ПК.

Распределенная база данных состоит из нескольких, возможно пересекающихся или даже дублирующих друг друга частей, хранимых в различных ЭВМ вычислительной сети. Работа с такой базой осуществляется с помощью системы управления распределенной базой данных (СУРБД).

По способу доступа к данным базы данных разделяются на базы данных с локальным доступом и базы данных с удаленным (сетевым) доступом.

Системы централизованных баз данных с сетевым доступом предполагают различные архитектуры подобных систем: файл-сервер; клиент-сервер.

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

Клиент-сервер подразумевает, что помимо хранения централизованной базы данных центральная машина (сервер базы данных) должна обеспечивать выполнение основного объема обработки данных. Запрос на данные, выдаваемый клиентом (рабочей станцией), порождает поиск и извлечение данных на сервере. Извлеченные данные (но не файлы) транспортируются по сети от сервера к клиенту. Спецификой архитектуры клиент-сервер является использование языка запросов SOL.

Понятие базы данных тесно связано с такими понятиями структурных элементов, как поле, запись, файл (таблица).

имя, например. Фамилия, Имя, Отчество, Дата рождения;

тип, например, символьный, числовой, календарный;

длина, например, 15 байт, причем будет определяться максимально возможным количеством символов;

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

В структуре записи файла указываются поля, значения которых являются ключами первичными (ПК), которые идентифицируют экземпляр записи, и вторичными (ВК), которые выполняют роль поисковых или группировочных признаков (по значению вторичного ключа можно найти несколько записей).

1.2 Виды моделей данных

Ядром любой базы данных является модель данных. Модель данных представляет собой множество структур данных, ограничений целостности и операций манипулирования данными. С помощью модели данных могут быть представлены объекты предметной области и взаимосвязи между ними.

СУБД основывается на использовании иерархической, сетевой или реляционной модели, на комбинации этих моделей или на некотором их подмножестве.

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

К каждой записи базы данных существует только один (иерархический) путь от корневой записи.

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

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

Реляционная модель ориентирована на организацию данных в виде двумерных таблиц. Каждая реляционная таблица представляет собой двумерный массив и обладает следующими свойствами:

— все столбцы в таблице однородные, т.е. все элементы в столбце имеют одинаковый тип (числовой, символьный и т.д.) и длину;

— каждый столбец имеет уникальное имя;

— одинаковые строки в таблице отсутствуют;

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

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

1.3 Основные понятия реляционных баз данных

Принято считать, что реляционный подход к организации баз данных был заложен в конце 1960-х гг. Эдгаром Коддом. В последние десятилетия этот подход является наиболее распространенным (с оговоркой, что в называемых в обиходе реляционными системах баз данных, основанных на языке SQL, в действительности нарушаются некоторые важные принципы классического реляционного подхода). Достоинствами реляционного подхода принято считать следующие свойства: реляционный подход основывается на небольшом числе интуитивно понятных абстракций, на основе которых возможно простое моделирование наиболее распространенных предметных областей; эти абстракции могут быть точно и формально определены; теоретическим базисом реляционного подхода к организации баз данных служит простой и мощный математический аппарат теории множеств и математической логики; реляционный подход обеспечивает возможность ненавигационного манипулирования данными без необходимости знания конкретной физической организации баз данных во внешней памяти. Компьютерный мир далеко не сразу признал реляционные системы. В 70-е года прошлого века, когда уже были получены почти все основные теоретические результаты и даже существовали первые прототипы реляционных СУБД, многие авторитетные специалисты отрицали возможность добиться эффективной реализации таких систем. Однако преимущества реляционного подхода и развитие методов и алгоритмов организации и управления реляционными базами данных привели к тому, что к концу 80-х годов реляционные системы заняли на мировом рынке СУБД доминирующее положение. В этой лекции на сравнительно неформальном уровне вводятся основные понятия реляционных баз данных, а также определяется сущность реляционной модели данных. Основной целью лекции является демонстрация простоты и возможности интуитивной интерпретации этих понятий. В следующих лекциях будут приводиться более формальные определения, на которых основана теория реляционных баз данных.

Выделют следующие основные понятия реляционных баз данных: тип данных, домен, атрибут, кортеж, отношение, первичный ключ. Смысл этих понятий отображен на рисунке 1, в качестве примера используется БД СЛУЖАЩИЕ, содержащего информацию о служащих некоторого предприятия.

Значения данных, хранимые в реляционной базе данных, являются типизированными, т. е. известен тип каждого хранимого значения. Понятие типа данных в реляционной модели данных полностью соответствует понятию типа данных в языках программирования. Напомним, что традиционное (нестрогое) определение типа данных состоит из трех основных компонентов: определение множества значений данного типа; определение набора операций, применимых к значениям типа; определение способа внешнего представления значений типа (литералов).

Обычно в современных реляционных базах данных допускается хранение символьных, числовых данных (точных и приблизительных), специализированных числовых данных (таких, как «деньги»), а также специальных «темпоральных» данных (дата, время, временной интервал). Кроме того, в реляционных системах поддерживается возможность определения пользователями собственных типов данных (более подробно мы обсудим это в лекции 9, курса «Введение в модель данных SQL»).

В примере на рисунке 1 мы имеем дело с данными трех типов: строки символов, целые числа и «деньги».

Понятие домена более специфично для баз данных, хотя и имеются аналогии с подтипами в некоторых языках программирования (более того, в своем «Третьем манифесте» Кристофер Дейт и Хью Дарвен вообще ликвидируют различие между доменом и типом данных). В общем виде домен определяется путем задания некоторого базового типа данных, к которому относятся элементы домена, и произвольного логического выражения, применяемого к элементу этого типа данных (ограничения домена). Элемент данных является элементом домена в том и только в том случае, если вычисление этого логического выражения дает результат истина (для логических значений мы будем попеременно использовать обозначения истина и ложь или true и false). С каждым доменом связывается имя, уникальное среди имен всех доменов соответствующей базы данных.

Наиболее правильной интуитивной трактовкой понятия домена является его восприятие как допустимого потенциального, ограниченного подмножества значений данного типа. Например, домен ИМЕНА в нашем примере определен на базовом типе символьных строк, но в число его значений могут входить только те строки, которые могут представлять имена (в частности, для возможности представления русских имен такие строки не могут начинаться с мягкого или твердого знака и не могут быть длиннее, например, 20 символов). Если некоторый атрибут отношения определяется на некотором домене то в дальнейшем ограничение домена играет роль ограничения целостности, накладываемого на значения этого атрибута.

Следует отметить также семантическую нагрузку понятия домена: данные считаются сравнимыми только в том случае, когда они относятся к одному домену. В нашем примере значения доменов НОМЕРА ПРОПУСКОВ и НОМЕРА ОТДЕЛОВ относятся к типу целых чисел, но не являются сравнимыми (допускать их сравнение было бы бессмысленно).

Заголовок отношения, кортеж, тело отношения, значение отношения, переменная отношения

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

Телом Br отношения r называется произвольное множество кортежей tr. Одно из возможных тел отношения СЛУЖАЩИЕ показано на рисунке 1. Заметим, что в общем случае, как это демонстрируют, в частности, рисунке 1 и пример предыдущего абзаца, могут существовать такие кортежи tr, которые соответствуют Hr, но не входят в Br.

Значением Vr отношения r называется пара множеств Hr и Br. Одно из допустимых значений отношения СЛУЖАЩИЕ показано на рисунке 1.

В изменчивой реляционной базе данных хранятся отношения, значения которых изменяются во времени. Переменной VARr называется именованный контейнер, который может содержать любое допустимое значение Vr. Естественно, что при определении любой VARr требуется указывать соответствующий заголовок отношения Hr.

Заметим, что в дальнейшем в тех случаях, когда точный смысл термина понятен из контекста, мы будем использовать термин отношение как в смысле значение отношения, так и в смысле переменная отношения.

По определению, степенью, или «арностью», заголовка отношения, кортежа, соответствующего этому заголовку, тела отношения, значения отношения и переменной отношения является мощность заголовка отношения. Например, степень отношения СЛУЖАЩИЕ равна четырем, т. е. оно является 4-арным (кватернарным).

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

По определению, первичным ключом переменной отношения является такое подмножество1) S множества атрибутов ее заголовка, что в любое время значение первичного ключа (составное, если в состав первичного ключа входит более одного атрибута) в любом кортеже тела отношения отличается от значения первичного ключа в любом другом кортеже тела этого отношения, а никакое собственное подмножество2) S этим свойством не обладает. В следующем разделе мы покажем, что существование первичного ключа у любого значения отношения является следствием одного из фундаментальных свойств отношений, а именно того свойства, что тело отношения является множеством кортежей.

2. Обзор СУБД Microsoft SQL Server

В прикладной программе, использующей при решении задачи один или несколько отдельных файлов, за сохранность и достоверность данных отвечал программист, работающий с этой задачей. Использование базы данных предполагает работу с ней нескольких прикладных программ, решающих задачи разных пользователей.

Естественно, что за сохранность и достоверность интегрированных данных программист, решающий одну из прикладных задач, отвечать уже не может. Кроме того, расширение круга решаемых с использованием базы данных задач может приводить к появлению новых типов записей и отношений между ними. Такое изменение структуры базы данных не должно вести к изменению множества ранее разработанных и успешно функционирующих прикладных программных систем, работающих с базой данных. С другой стороны, возможное изменение любой из прикладных программ, в свою очередь, не должно приводить к изменению структуры данных. Все вышесказанное обусловливает необходимость отделения данных от прикладных программ.

Основные функции системы управления базами данных:

— определение структуры создаваемой базы данных, ее инициализация и проведение начальной загрузки. Как правило, создание структуры базы данных происходит в режиме диалога. СУБД последовательно запрашивает у пользователя необходимые данные. В большинстве современных СУБД база данных представляется в виде совокупности таблиц;

— предоставление пользователям возможности манипулирования данными (выборка необходимых данных, выполнение вычислений, разработка интерфейса ввода/вывода, визуализация). Такие возможности в СУБД представляются либо на основе использования специального языка программирования, входящего в состав СУБД, либо с помощью графического интерфейса;

2.2 Обзор Microsoft SQL Server


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


Исходный код MS SQL Server (до версии 7.0) основывался на коде Sybase SQL Server, и это позволило Microsoft выйти на рынок баз данных для предприятий, где конкурировали Oracle, IBM, и, позже, сама Sybase. Microsoft, Sybase и Ashton-Tate первоначально объединились для создания и выпуска на рынок первой версии программы, получившей название SQL Server 1.0 для OS/2 (около 1989 года), которая фактически была эквивалентом Sybase SQL Server 3.0 для Unix, VMS и др. Microsoft SQL Server 4.2 был выпущен в 1992 году и входил в состав операционной системы Microsoft OS/2 версии 1.3. Официальный релиз Microsoft SQL Server версии 4.21 для ОС Windows NT состоялся одновременно с релизом самой Windows NT (версии 3.1). Microsoft SQL Server 6.0 был первой версией SQL Server, созданной исключительно для архитектуры NT и без участия в процессе разработки Sybase.


К тому времени, как вышла на рынок ОС Windows NT, Sybase и Microsoft разошлись и следовали собственным моделям программного продукта и маркетинговым схемам. Microsoft добивалась исключительных прав на все версии SQL Server для Windows. Позже Sybase изменила название своего продукта на Adaptive Server Enterprise во избежание путаницы с Microsoft SQL Server. До 1994 года Microsoft получила от Sybase три уведомления об авторских правах как намёк на происхождение Microsoft SQL Server.


После разделения компании сделали несколько самостоятельных релизов программ. SQL Server 7.0 был первым сервером баз данных с настоящим пользовательским графическим интерфейсом администрирования. Для устранения претензий со стороны Sybase в нарушении авторских прав, весь наследуемый код в седьмой версии был переписан.


С момента выпуска предыдущей версии SQL Server (SQL Server 2000) было осуществлено развитие интегрированной среды разработки и ряда дополнительных подсистем, входящих в состав SQL Server 2005. Изменения коснулись реализации технологии ETL (извлечение, преобразование и загрузка данных), входящей в состав компонента SQL Server Integration Services (SSIS), сервера оповещения, средств аналитической обработки многомерных моделей данных (OLAP) и сбора релевантной информации (обе службы входят в состав Microsoft Analysis Services), а также нескольких служб сообщений, а именно Service Broker и Notification Services. Помимо этого, были произведены улучшения в производительности.


Microsoft SQL Server в качестве языка запросов использует версию SQL, получившую название Transact-SQL (сокращённо T-SQL), являющуюся реализацией SQL-92 (стандарт ISO для SQL) с множественными расширениями. T-SQL позволяет использовать дополнительный синтаксис для хранимых процедур и обеспечивает поддержку транзакций (взаимодействие базы данных с управляющим приложением). Microsoft SQL Server и Sybase ASE для взаимодействия с сетью используют протокол уровня приложения под названием Tabular Data Stream (TDS, протокол передачи табличных данных). Протокол TDS также был реализован в проекте FreeTDS с целью обеспечить различным приложениям возможность взаимодействия с базами данных Microsoft SQL Server и Sybase.


SQL Server поддерживает избыточное дублирование данных по трем сценариям:


— Снимок: Производится «снимок» базы данных, который сервер отправляет получателям.


— История изменений: Все изменения базы данных непрерывно передаются пользователям.


— Синхронизация с другими серверами: Базы данных нескольких серверов синхронизируются между собой. Изменения всех баз данных происходят независимо друг от друга на каждом сервере, а при синхронизации происходит сверка данных. Данный тип дублирования предусматривает возможность разрешения противоречий между БД.


3. Разработка клиентского приложения к базе данных


— с множествами объявлений классов, которые содержат объявления унаследованных методов и свойств, предназначенных для решения задачи извлечения информации из базы данных;


— с множеством объектов-представителей классов, которые обеспечивают работу с базами данных;


— с множеством значений и свойств конкретных объектов, отражающих специфику структуры конкретной базы данных.


Функциональные особенности этой сложной системы взаимодействующих классов обеспечивают единообразную работу с базами данных независимо от системы управления базой и ее реализации.


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


Недостатки такого подхода стали выявляться после появления приложений, ориентированных на Интернет.


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


— набора данных (представляется объектом класса DataSet) со стороны клиента. Это локальное временное хранилище данных;


Классы подсоединенных объектов обеспечивают установление соединения с базой данных и управление базой со стороны приложения; классы отсоединенных объектов обеспечивают сохранение, использование и преобразование полученной от базы данных информации на стороне приложения.


3.2 Создание базы данных в Microsoft SQL Server 2005


Для того что бы клиентское приложение могло работать для него необходимо создать БД. Чтобы создать БД на Microsoft® SQL Server 2005, необходимо запустить утилиту Microsoft SQL Server Management Studio из поставки SQL сервера. После соединения нужно щелкнуть правой кнопкой мыши по контейнеру Database в Object Explorer и в контекстном меню выбрать New Database. Откроется диалоговое окно New Database которое показано на рисунке 2, в котором в котором нужно ввести только имя создаваемой базы данных. Для всех остальных параметров будут подставлены значения по умолчанию.


Для клиентского приложения будет использоваться БД с названием Jurnal. Данная БД предназначена для учета посещаемости студентов она должна показывать какой студент, какого числа отсутствовал на занятии. БД Jurnal состоит из таблиц. Таблицы представляют собой основные единицы хранения данных в реляционной базе данных. Общепринято, что каждый тип сущности, например, определенная разновидность ароматического масла в базе данных нашего примера, представляется таблицей, в то время как каждый экземпляр сущности, например, Clary Sage или German Chamomile, представляется строкой в таблице. Каждый столбец в таблице имеет определенные свойства, которые описывают его в SQL Server. Наиболее важным из этих свойств является тип данных, который является описанием типа информации, которая будет храниться в столбце. SQL Server предоставляет обширный перечень типов данных. Так как наши таблицы содержат не длинные данные то лучше всего использовать тип данных nchar.


Таблицы создаются и обслуживаются с помощью конструктора таблиц Table Designer Enterprise Manager. Первая таблица созданная с помощью конструктора это таблица “student” она изображена на рисунке 3.


Данная таблица содержит список студентов. Следующая таблица “Predmet” она изображена на рисунке 4.


Эта таблица содержит список изучаемых предметов. Помимо таблиц “Predmet” и “student” в БД Jurnal включены еще одна таблица: таблица “Propusk” она изображена на рисунке 5.


Таблица “Propusk” отображает пропуски студентов с учетом Фамилии, предмета и числа.


3.3 Создание клиентского приложения


SqlConnectionStringBuilder a = new SqlConnectionStringBuilder();


Весь представленный код записывается в кнопку button1.


a.DataSource = textBox1.Text;


a.InitialCatalog = textBox2.Text;


a.IntegratedSecurity = true;


a.UserID = textBox3.Text;


a.Password = textBox4.Text;


Создание объекта Connection не приводит к немедленному открытию соединения. Открыть соединение можно в любой момент. Это делается с помощью метода Open.


SqlConnection b = new SqlConnection();


b.ConnectionString = a.ConnectionString;


b.Open();


Где в DataSource записывается расположение БД, в InitialCatalog указывается название БД, а в следующих полях UserID и Password записывается имя пользователя и пароль.


После установки подключения необходимо указать какие данные нужны приложению и получить результат.


ADO.NET не накладывает ограничений на язык или синтаксис, но наиболее распространеным форматом языка запросов к источнику данных является SQL.


SQL позволяет выполнить запросы к БД, указав критерии выборки с помощью команды SELECT, либо обрабатывать дынные командами INSERT, UPDATE или DELETE.


Сам объет Connection не способен выполнять какие-либо операции, а является фактически мостом между клиентским приложением и источником данных, через который другие объекты получают доступ к источнику. Объект который позволяет работать с источником данных, является объект Command. Именно это объект позволяет выполнять выражения SQL и хранимые процедуры в БД.


Для создания запроса необходимо создать объект comand, он создается:


SqlCommand c = new SqlCommand();


Ниже представлен код которы создает запрос к таблице student, считывае все имена находящиеся в столбце ID+Sudent и выводит их в поле combobox1.


c.CommandText = «select [ID+Sudent] from student»;


c.Connection = b;


SqlDataReader f = c.ExecuteReader();


while (f.Read())


comboBox1.Items.Add(f[0]);


Следующий код также создает запрос, но уже к таблице Predmet и считывае названия всех предметов которые находятся в столбце ID+Predmet, полученный результат записывает в Combobox2.


SqlConnection opendis = new SqlConnection();


opendis.ConnectionString = a.ConnectionString;


opendis.Open();


SqlCommand q = new SqlCommand();


q.CommandText = «select [ID+Predmet] from Predmet»;


q.Connection = opendis;


SqlDataReader z = q.ExecuteReader();


while (z.Read())


comboBox2.Items.Add(z[0]);


После того как записали данные в comboBox нужно выполнит запрос к табли таблице Propusk выбрать все элементы столбца ID+Data и ID+Propusk с учетом выбранных элементов в comboBox и результат вывести в текстовое поле. Это запрос реализован ниже:


SqlCommand w = new SqlCommand();


SqlCommand v = new SqlCommand();


SqlCommand n = new SqlCommand();


w.CommandText = «select [N] from [student] where [ID+Sudent]='» + comboBox1.Text + «‘»;


w.Connection = openprop;


SqlDataReader x = w.ExecuteReader();


x.Read();


string ff = x[0].ToString();


x.Close();


n.CommandText = «select [N] from [Predmet] where [ID+Predmet]='» + comboBox2.Text + «‘»;


n.Connection = openprop;


SqlDataReader p = n.ExecuteReader();


p.Read();


string i = p[0].ToString();


p.Close();


v.CommandText = «select [ID+Data],[ID+Propusk] from Propusk where [ID+Student]='» + ff + «‘» + «and [ID+Predmet]='» + i + «‘» ; v.Connection = openprop;


x = v.ExecuteReader();


while (x.Read())


richTextBox1.Text += x[0].ToString() + x[1].ToString() + «\n»;


Внешний вид приложения реализующий доступ к БД “Jurnal” представлен на рисунке 6.


Приложение состоит из двух частей :


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


Кнопка соеденит имеет следующий исходный техст:


SqlConnectionStringBuilder a = new SqlConnectionStringBuilder();

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *