OberonCore https://forum.oberoncore.ru/ |
|
Где скрыта реализация потомков Table.Read от SqlDB https://forum.oberoncore.ru/viewtopic.php?f=23&t=3875 |
Страница 1 из 1 |
Автор: | Kubanych [ Среда, 07 Март, 2012 05:29 ] |
Заголовок сообщения: | Где скрыта реализация потомков Table.Read от SqlDB |
Здравствуйте. Открываем модуль SqlDB. Там есть строка Код: PROCEDURE (t: Table) Read* (row: INTEGER; VAR data: ANYREC), NEW, ABSTRACT; Если добавить строку Код: PROCEDURE (t: Table) ReadLn* (row: INTEGER; VAR data:POINTER TO ARRAY OF String), NEW, ABSTRACT; то ошибка показывается здесь Код: StdTable = POINTER TO RECORD (Table [unimplemented abstract procedures in base types]) Table - сын ANYPTR Код: Table* = POINTER TO ABSTRACT RECORD Модуль SqlDb непосредственно подключается в приложениях с базами данных и этот Table используется, его метод Read вызывается. Где скрыта реализация Table.Read (или потомков?) от SqlDB ? |
Автор: | Иван Кузьмицкий [ Среда, 07 Март, 2012 06:05 ] |
Заголовок сообщения: | Re: Где скрыта реализация потомков Table.Read от SqlDB |
Kubanych писал(а): Где скрыта реализация Table.Read (или потомков?) от SqlDB ? Методы Table реализуются в драйвере, посмотрите в SqlObxDriv, например. Такой подход позволяет менять SQL-"хост", не меняя прикладную логику. Чтобы, к примеру, сделать прямое подключение к серверу MySQL, потребовалось написать соответствующий драйвер. Есть драйвер для БД Firebird. Да какой угодно можно драйвер сделать. |
Автор: | Kubanych [ Среда, 07 Март, 2012 07:42 ] |
Заголовок сообщения: | Re: Где скрыта реализация потомков Table.Read от SqlDB |
Иван Кузьмицкий писал(а): Kubanych писал(а): Где скрыта реализация Table.Read (или потомков?) от SqlDB ? Методы Table реализуются в драйвере, посмотрите в SqlObxDriv, например. Я тоже так думал вначале. Открываем, смотрим. В модуле SqlObxDriv (и в MysqlDriver ) есть методы Код: PROCEDURE (t: Table) ReadInteger (row, column: INTEGER; OUT val: INTEGER); PROCEDURE (t: Table) ReadReal (row, column: INTEGER; OUT val: LONGREAL); но нигде я не нашел реализацию метода Код: PROCEDURE (t: Table) Read* (row: INTEGER; VAR data: ANYREC) То же самое в драйвере Firebird. |
Автор: | Евгений Темиргалеев [ Среда, 07 Март, 2012 08:05 ] |
Заголовок сообщения: | Re: Где скрыта реализация потомков Table.Read от SqlDB |
Kubanych писал(а): Модуль SqlDb непосредственно подключается в приложениях с базами данных В приложениях используется реализация, скрытая в этом же модуле: SqlDB.StdTable.и этот Table используется, его метод Read вызывается. Где скрыта реализация Table.Read (или потомков?) от SqlDB ? Код: PROCEDURE (t: StdTable) Read (row: INTEGER; VAR data: ANYREC); ... Она-то и использует реализуемые драйверами операции.
|
Автор: | Kubanych [ Среда, 07 Март, 2012 08:12 ] |
Заголовок сообщения: | Re: Где скрыта реализация потомков Table.Read от SqlDB |
Евгений Темиргалеев писал(а): Kubanych писал(а): Код: PROCEDURE (t: StdTable) Read (row: INTEGER; VAR data: ANYREC); ... Она-то и использует реализуемые драйверами операции.Спасибо. А ларчик просто открывался! Причина - в моей невнимательности. Тут один коллега писал аналог Joomla на BlackBox, остановился на необходимости принимать результат запроса в динамический массив строк (когда заранее неизвестна структура таблицы и неизвестно, какой должна быть запись-итерактор). Будем переделывать StdTable.Read в StdTable.ReadLn. На первый взгляд там очень много чего надо перелопатить. Может быть, кто-нибудь сталкивался с такой задачей? |
Автор: | Евгений Темиргалеев [ Среда, 07 Март, 2012 08:43 ] |
Заголовок сообщения: | Re: Где скрыта реализация потомков Table.Read от SqlDB |
Kubanych писал(а): Может быть, кто-нибудь сталкивался с такой задачей? SqlDb Docu писал(а): TYPE Row
A Row variable contains a textual representation of a single row of a database. An interactor of this type can be used as parameter of the Table.Read operation when a textual representation of an unknown table is to be retrieved. |
Автор: | Kubanych [ Пятница, 09 Март, 2012 08:41 ] |
Заголовок сообщения: | Re: Где скрыта реализация потомков Table.Read от SqlDB |
Спасибо. Надо было мне просто внимательней читать документацию. А то получается ситуация,как у Кроша и Ежика в Смешариках: "Не знаю, чему удивляться больше: твоей изобретательности или твоей неосведомленности." |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |