Методические указания к выполнению ЛР5 - Работа с объектной базой данных (1033954), страница 2
Текст из файла (страница 2)
Рис.3
Необходимо нажать кнопку «Add» и добавить новый инструмент связывания (Рис.4):
Рис.4
В поле «Command» указать путь к приложению CacheNetWizard.exe.
Данное приложение расположено в директории <CacheSys>\Dev\dotnet\Bin. (Рис.5)
Рис.5
После того, как были проделаны данные операции необходимо зайти в меню Tools->Cache и запустить утилиту (Рис.6).
Рис.6
Пользователю будет предложено задать некоторые параметры соединения со средой разработки Cache (указать тип языка, в коды которого осуществляется проекция, выбрать классы для проекции, указать параметры соединения) - см. Рис.7:
Рис. 7
Нажав на кнопку «Connect» необходимо задать параметры соединения (Рис.8):
-хост;
-логин;
-пароль;
-выбрать пространство имен.
Рис.8
Далее будет сгенерирован код на С и автоматически в среде Microsoft Visual Studio будет создан проект, куда будут добавлены сгенерированные файлы (Рис.9):
Рис.9
Описание основных методов клиента и сервера
Ниже приведено описание стандартной процедуры связывания проекта на Cache с клиентской частью, написанной на С.
using System;
using InterSystems.Data.CacheClient;
using InterSystems.Data.CacheTypes;
namespace TinySpace {
class TinyProxy {
[STAThread]
static void Main(string[] args) {
CacheConnection CacheConnect = new CacheConnection();
CacheConnect.ConnectionString = "Server = localhost; "
+ "Port = 1972; " + "Namespace = SAMPLES; "
+ "Password = SYS; " + "User ID = _SYSTEM;";
CacheConnect.Open();
Sample.Person person = Sample.Person.OpenId(CacheConnect, "1");
Console.WriteLine("TinyProxy output: \r\n "
+ person.Id() + ": "
+ person.Name
);
person.Close();
CacheConnect.Close();
} // end Main()
} // end class TinyProxy
}
Следует обозначить два основных момента, которые необходимо использовать при связывании проекта на Cache с клиентской частью, написанной на С.
-
Необходимо использовать библиотеки:
- CacheClient (using InterSystems.Data.CacheClient);
-CacheTypes (using InterSystems.Data.CacheTypes);
-
Необходимо создать объект «Соединение» (где прописываются основные параметры соединения: хост, пароль, логин, пор, пространство имен) для связывания клиентской и серверной частей:
CacheConnection CacheConnect = new CacheConnection();
CacheConnect.ConnectionString = "Server = localhost; "
+ "Port = 1972; " + "Namespace = SAMPLES; "
+ "Password = SYS; " + "User ID = _SYSTEM;";
CacheConnect.Open();
Метод класса OpenID()–получает доступ к экземпляру класса по ID объекта. Sample.Person person = Sample.Person.OpenId(CacheConnect, "1"); |
Для создания объекта необходимо использовать методы класса new() Sample.Person person = new Sample.Person(CacheConnect); |
Метод класса Save() используется для сохранения объекта. CacheStatus sc = person.Save(); |
Метод класса ExistID() используется для проверки существования объекта по введенному ID. string personExists = Sample.Person.ExistsId(CacheConnect, ID).ToString() |
Метод Close() разрывает соединение с серверной частью приложения, но не удаляет данный объект из базы. Метод DeleteID() удаляет данный объект из базы. person.Close(); CacheStatus sc = Sample.Person.DeleteId(CacheConnect, ID); |
Метод KillExtent() –удаляет все экземпляры класса и их подклассы CacheStatus sc = Sample.Person.KillExtent(CacheConnect) |
Пример задания
Определить в среде Cache` Studio класс
Класс "School"(Школа) - хранимый класс. Содержит свойства:
-
num - номер - целое,
-
city - город - строковое,
-
col – ученики (количество учеников) – целое.
-
индекс типа IDKEY на поле номер,
-
Inf() - метод экземпляра, который возвращает строку вида: «Номер — город — ученики — количество_секций»,
-
Create (номер,город) — метод класса (и хранимая процедура), который проверяет существование объекта школа с номером, и, если он существует, то открывает его, иначе создает новый объект и устанавливает поле названия. Затем устанавливает значения полей город (переданное через параметры) и ученики (для нового объекта=200), сохраняет объект. Метод имеет входные параметры: номер и город школы; и выходной параметр — созданный объект.
Используя Портал и/или Терминал создать объекты класса Школа. В Терминале вызвать созданные методы и проверить их работоспособность. В Портале проверить содержимое таблицы Школа.
Создание проекции класса
Создать в среде Cache` Studio проекцию класса Школа (для проекции в С++) или в MS Visual Studio (для проекции в С#).
Использование проекции класса
Создать в среде Visual Studio на языке с++ или с# приложение (оконное или консольное), которое обращается к классу Школа как к объекту и выполняет следующие действия:
-
создать объект Школа (указать поля номер, ученики, город) через стандартные методы (New(), Save()) и метод класса create().
-
ввести номер Школы, проверить ее существование (метод ExistsId()), открыть (OpenId()) и выполнить метод Inf() для текущего объекта. Результат выполнения метода отобразить пользователю.
Проверить в Портале добавление объектов.
Вопросы для самопроверки
-
Что такое проекция класса и как ее создать?
-
Каким образом из внешней среды через проекцию класса можно создавать, изменять, сохранять и удалять объекты?
-
Каким образом из внешней среды через проекцию класса можно вызывать методы?
-
В чекм отличия работы с объектами в среде СУБД и снешнем приложении?
-
Как задать сохранение свойства?
-
Как настроить соединение с БД?
-
Как через проекцию добавлять, изменять и удалять объекты БД?
Содержание отчета по лабораторной работе
-
Титульный лист,
-
Задание на работу,
-
Исходный код описания классов в Cache,
-
Исходный код описания классов С++ или С#,
-
Исходный код приложения для работы с БД,
-
Скриншоты полученных результатов.
Литература
-
«Постреляционная СУБД Cache» - http://www.citforum.ru/database/articles/cache.shtml
-
«Взаимодействие СУБД Cache с внешним миром» - http://www.citforum.ru/database/cache/cache_ex/
-
Справочные материалы по СУБД Cache`, http://www.intersystems.ru/cache/devcorner/index.html
16