Guest3d.wohlnet.ru
некоммерческий проект, цель которого объединить профессионалов для обмена опытом и знаниями в области real-time рендеринга
guest3d
4.03: Экспертный уровень: Подключение баз данных (Database connectivity)

Quest3D предлагает два типа подключения баз данных. Первый, встроенный, MySQL, второй - ODBC 3.0. Эти два типа подключения представляют собой большую часть существующих технологий баз данных.

Обратите внимание, что подключение баз данных
доступно только в редакциях Quest3D Power и
VR Editions.

В центре функциональности базы данных в Quest3D лежит подключение к внешней базе данных. Каналы DB Driver MySQL и DB Driver ODBC используются для настройки подключения, с помощью их соответствующих протоколов.

Канал DB Source представляет само подключение.

Запросы (Queries)
После того, как подключение драйвера MySQL было установлено, канал DB Query используется для извлечения и хранения данных. В его окне настроек должен быть указан источник DB Source и запросу должно быть задано имя. Сам по себе запрос (query) может быть введен в диалоговом окне или подключен как текстовый канал Text к первому потомственному входу канала DB Query.

Параметры запросов (Query parameters)
Второй потомственный вход канала DB Query, ‘Input’, может быть использован для добавления запросу параметров. Первый потомок ‘Input’ обозначается, как ‘$$1$$’, второй, как ‘$$2$$’ и так далее.

Примеры часто используемых команд MySQL включают:

  • SELECT [column] FROM [table] WHERE [condition]
  • INSERT INTO [table] ([column1, column2]) VALUES [“value1”, “value2”])
  • UPDATE [table] SET [column=”value”] WHERE [condition]

Пожалуйста, обратитесь к официальной документации MySQL за дополнительной информацией по командам синтаксису запросов.

Хранение данных в Quest3D
Результаты запросов могут храниться в каналах типа DB Value или DB Text. Окно настроек этих двух типов каналов позволяет вам выбрать запрос и поле. Потомственные входы этих каналов могут быть использованы для задания номера ряда и столбца.

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

ODBC
ODBC в Quest3D работает подобно подключениям MySQL, за исключением того, что подключение выполняется с помощью драйвера, а не напрямую к базе данных. Драйвер ODBC выставлен на подключение к dBase, MS Excel и MQIS файлам, а также к базам данных MS Access.

Пожалуйста, обратитесь к официальной документации ODBC для дополнительной информации по командам и синтаксису запросов.

Урок
Следующие шаги образуют упражнение по подключению удаленной базы данных MySQL с помощью каналов Quest3D. Второй пример добавляет функциональность массива (array).

Примечание: для этого урока вам понадобится
доступ к локальному или удаленному серверу MySQL. Следующие шаги операются на базу данных под названием ‘quest3d’, содержащую тублицу под названием ‘player’, со столбцами для ‘id’, ‘name’ и ‘type’. Для лучших результатов, таблица должна содержать три или большее количество записей. Можете свободно использовать редактирование этих данных для своих личных ситуаций.

Необходимая сцена Quest3D:
..\Tutorials\4.3 – Database connectivity\Datase connectivity 1.cgr
Необходимые шаблоны:
Enterprise \ Database \ DB Driver MySQL
Variables \ Text \ Text (x3)
Power \ Database \ DB Source
Power \ Database \ DB Info Value
Power \ Database \ DB Query
Power \ Database \ DB Text
Variables \ Value \ Value

Шаг за шагом:

  • Откройте файл ‘Database connectivity 1.cgr’. Он содержит простую логическую структуру.
  • Перетяните канал DB Driver MySQL в Граф Каналов.
  • Добавьте канал Text и подключите его к потомственному входу ‘Host’ канала ‘DB Driver MySQL’. Переименуйте канал Text в ‘Host’. Дважды щелкните по каналу и смените текст на ‘127.0.0.1’. Это ‘localhost’ IP адрес. Если вы обладаете доступом к удаленной базе данных, используйте вместо этого ее IP. Нажмите ‘OK’ для подтверждения и закройте окно настроек.
  • Перетяните другой канал Text в Граф Каналов и подключите его к потомственному входу ‘Database’ канала ‘DB DriverMySQL’. Переименуйте этот канал Text в ‘Database’. Дважды щелкните по каналу и измените текст на ‘example’. Это имя базы данных на удаленном вебсервере Quest3D. Нажмите ‘OK’ для подтверждения и закройте окно настроек.
  • Добавьте другой канал Text и подключите его к потомственному входу ‘Username’ канала ‘DB DriverMySQL’. Переименуйте канал Text в ‘User name’. Дважды щелкните по каналу и измените текст на ‘root’. Нажмите ‘OK’ для подтверждения и закройте окно настроек.
  • Если сервер требует пароль, добавьте другой канал Text и подключите его к потомственному входу ‘Password’. Смените текст на пароль.
  • Перетяните канал DB Source в Граф Каналов. Дважды щелкните по каналу для вывода окна его настроек. В качестве имени в Quest3D (‘Name in Quest3D’), воспользуйтесь ‘MySQL’ и выберите опцию ‘Rename channel’ (переименовать канал). Нажмите ‘OK’ для подтверждения.
  • Подключите канал ‘DB DriverMySQL’ к каналу ‘DB Source’.
  • Добавьте DB Info Value и подключите его к ‘Database’ Channel Caller. Дважды щелкните по каналу DB Info Value чтобы открыть окно его настроек. Из выпадающего списка выберите опцию ‘Database Connected’ (база данных подключена). Из второго выпадающего списка выберите ‘MySQL’. Обратите внимание, что это имя подключения, указанное в канале DB Source. Нажмите ‘OK’ для подтверждения.
  • Подключите канал ‘MySQL’ к каналу ‘One Time’.
  • Дважды щелкните по каналу ‘One Time’ для вывода его окна. Нажмите кнопку ‘Reset’ для вызова потомков канала. Через некоторое время значение канала DB Info Value должно смениться на ‘1’. Закройте окно настроек канала ‘One Time’.
  • Перетяните канал DB Query в Граф Каналов и подключите его к каналу ‘Retrieve Data’. Дважды щелкните по каналу ‘DB Query’ для открытия окна его настроек.

Из выпадающего списка выберите ‘MySQL’. В качестве наименования запроса ‘Name of this query’, используйте ‘Get Player Info’. В качестве фактического запроса ‘Actual query’, используйте

SELECT * FROM player

Это извлечет все данные из таблицы ‘player’. Нажмите кнопку ‘Execute’ (запустить), затем кнопку ‘Results’ (результаты). Появится окно, показывающее результаты запроса. Нажмите ‘Close’, затем ‘OK’ для подтверждения.

  • Добавьте канал DB Text и подключите его к каналу ‘Text Out’. Дважды щелкните по каналу DB Text для открытия окна его настроек. Выберите поле ‘name’ запроса ‘Get Player Info’. Выберите опцию ‘Rename channel’ (переименовать канал) и нажмите ‘OK’ для подтверждения. Обратите внимание, что имя отображается на экране в обзорном окне Animation 3D View.
  • Перетяните канал Value в Граф Каналов и подключите его к первому потомственному входу канала DB Text. Переименуйте Value в ‘Index’.

  • Смените значение канала ‘Index’ на ‘1’ для запроса второй записи в столбце ‘name’. Обратите внимание, что вместе с этим изменится имя на экране.

Законченная сцена:
..\Tutorials\4.3 – Database connectivity\Datase connectivity 1 – Complete.cgr
Если хотите, можете сохранить текущую группу каналов в вашу папку проектов. Следующие шаги связаны с новой сценой.

Урок2
Необходимая сцена Quest3D:
..\Tutorials\4.3 – Database connectivity\Datase connectivity 2.cgr
Необходимые шаблоны:
Variables \ Text \ Array Text (x2)

Шаг за шагом:

  • Откройте файл ‘Database connectivity 2.cgr’. Он содержит логику подключения базы данных, подобную примеру выше.
  • Перетяните канал Array Text в Граф Каналов и подключите его ко второму потомственному входу канала ‘Set Name Text’. Дважды щелкните по каналу ‘Array Text’ для открытия окна его настроек. Из выпадающего списка таблицы ‘Table’, выберите ‘Player’. Из выпадающего списка столбца ‘Column’, выберите ‘Name’. Выберите опцию ‘Update channel name’ (обновить имя канала) и нажмите ‘OK’ для подтверждения.
  • Нажмите правой клавишей мыши на канале ‘Player: Name’ и из меню выберите ‘General Properties’ (основные настройки). Установите ‘Update’ (обновление) на ‘Continuous’ (непрерывное) и нажмите ‘OK’ для подтверждения.
  • Создайте ярлык канала ‘Current Row’ (текущий ряд) и подключите его как индексное значение (index value) к каналу ‘Player: name’.
  • Переключтесь в Run Mode.
  • Нажмите ‘F2’ для импорта базы данных в Quest3D.
  • Переключитесь в Edit Mode.
  • Нажмите закладку ‘Array Manager’ (менеджер массивов) и выберите таблицу ‘Player’. Обратите внимание, что столбец ‘Name’ заполнен именами из соответствующего столбца внешней базы данных.
  • Нажмите закладку ‘Channel Graph’.
  • Добавьте другой канал Array Text и подключите его к первому (пустому) потомственному входу ‘Input’ канала ‘Set Player Name’. Задайте массив как ссылку (reference) столбца ‘Name’ в таблице ‘Player’ и переименуйте его соответственно.
  • Нажмите правой клавишей мыши на канал ‘Player: Name’ и из меню выберите ‘General Properties’. Установите ‘Update’ на ‘Continous’ и нажмите ‘OK’ для подтверждения.
  • Создайте ярлык канала ‘Current Row’ этого цикла For Loop, и подключите его как индексное значение к каналу ‘Player: Name’, который вы только что создали.
  • Дважды щелкните по каналу ‘Set Player Name’. Введите следующий запрос:

UPDATE player SET name="$$1$$" WHERE id="$$2$$"

Это заменит все записи в столбце ‘name’ таблицы ‘player’ в удаленной базе данных. Столбец ‘id’ используется как первичный индекс. Обратите внимание, что ‘$$1$$’ ссылается на второй потомственный вход канала ‘Set Player Name’. ‘$$2$$’ ссылается на третий потомственный вход. Нажмите ‘OK’ для подтверждения.

  • Нажмите закладку ‘Array Manager’.
  • Измените одно из имен столбца ‘Name’ в таблице ‘Player’. Обратите внимание, что имя изменилось в правом столбце на экране в окне Animation 3D View, но не в левом.
  • Переключитесь в режим Run Mode.
  • Нажмите клавишу ‘F3’ для обновления удаленной базы данных с учетом данных массива Quest3D.
  • Нажмите клавишу ‘F2’ для повторного импорта данных из удаленной базы данных в Quest3D. Обратите внимание, что левый столбец на экране в окне Animation 3D View был обновлен.
  • Переключитесь в Edit Mode.
  • Дважды щелкните по каналу ‘Insert Player Name’ (вставить имя игрока). Введите следующий запрос:

INSERT player SET name="$$1$$"

Это добавит новую запись в таблице ‘player’ удаленной базы данных. Обратите внимание, что ‘$$1$$’ ссылается на второй потомственный вход канала ‘Insert Data’. Нажмите ‘OK’ для подтверждения.

  • Переключитесь в Run Mode.
  • Нажмите ‘F4’ для вставки новой записи в удаленную базу данных.
  • Нажмите ‘F2’ для повторного импорта данных из удаленной базы данных в Quest3D. Обратите внимание, что и левый и правый столбец в окне Animation 3D View были обновлены.

Законченная сцена:
..\Tutorials\4.3 – Database connectivity\Datase connectivity 2 – Complete.cgr

Если у вас есть материалы, или вы хотите дополнить существующие, если вы хотите писать новости относящиеся к технологиям реалтайм рендеринга, или имеете полезные файлы, вы можете стать резидентом guest3d.wohlnet.ru. Для этого нужно написать письмо в свободной форме на den@wohlnet.ru, с указанием вашей мотивации. Кроме того, каждый резидент получает возможность создать свою страницу, ссылка на которую будет прикреплена к каждому опубликованному вами материалу.
вход