Платформы корпоративных информационных систем


Пример 13-9. Перемещение по результирующему набору



Пример 13-9. Перемещение по результирующему набору


int Result::Next() { T_ROW row;

if( result == (T_RESULT *)NULL ) {

throw "Результирующий набор закрыт.";

}

#if defined(HAS_MSQL)

row = msqlFetchRow(result);

#elif defined(HAS_MYSQL)

row = mysql_fetch_row(result);

#else

#error Нет соединения с базой данных,

#endif if( ! row )

{

current_row = (Row *)NULL;

return 0;

}

else

{

current_row = new Row(result, row);

return 1;

}

}

Row 'Result::GetCurrentRow()

{

if( result == (T_RESULT *)NULL )

{ throw "Результирующий набор закрыт.";

}

return current_row; }

Заголовочный файл row.h в примере 13-11 определяет T_ROW и T_RESULT в зависимости от того, для какого ядра базы данных компилируется приложение. Перемещение к следующей строке в обеих базах данных осуществляется одинаково и просто. Вы вызываете mysql_fetch_row() или msqlFetchRow() . Если вызов возвращает NULL, значит, необработанных строк не осталось.

В объектно-ориентированной среде это единственный тип навигации, которым вы должны пользоваться. API для базы данных в объектно-ориентированном программировании существует лишь для обеспечения извлечения данных, а не их обработки. Обработка данных должна быть заключена в объектах доменов. Однако не все приложения являются объектно-ориентированными. MySQL и mSQL предоставляют функции, позволяющие перемещаться к определенным строкам в базе данных. Это методы mysql_data_seek() mnsqlDataSeek() соответственно.









Начало  Назад  Вперед


Книжный магазин