Druzya.org
Возьмемся за руки, Друзья...
 
 
Наши Друзья

Александр Градский
Мемориальный сайт Дольфи. 
				  Светлой памяти детей,
				  погибших  1 июня 2001 года, 
				  а также всем жертвам теракта возле 
				 Тель-Авивского Дельфинариума посвящается...

 
liveinternet.ru: показано количество просмотров и посетителей

Библиотека :: Компьютеры и Программирование :: Начинаем изучать MySQL
<<-[Весь Текст]
Страница: из 157
 <<-
 
return row_count; 
}
else 
{
#if defined(HAS_MSQL)
row_count = msqlNumRows(result);
#elif defined(HAS_MYSQL)
row_count = mysql_num_rows(result);
#else
#error Нет соединения с базой данных, 
#endif
return row_count;
}
}
Строки
Отдельная строка результирующего набора представляется в нашей объектной модели 
классом Row. Класс Row позволяет приложению извлекать отдельные поля строки. В 
примере 13-11 показано объявление класса Row.
Пример 13-11. Объявление класса Row в row.h
#ifndef l_row_h
#define l_row_h
#include 
#if defined(HAS_MSQL) 
#include 
#define T_RESULT m_result 
#define T_ROW m_row 
#elif defined(HAS_MYSQL) 
#include  
#define T_RESULT MYSQL_RES
#define T_ROW MYSQL_ROW 
#endif
class Row { private:
T_RESULT 'result;
T_ROW fields;
public:
Row(T_RESULT *, T_ROW);
~Row();
char *GetField(int);
int GetFieldCount(); 
int IsClosed();
void Close();
};
#endif // l_row_h
В обоих API есть макросы для типов данных, представляющие результирующий набор 
и строку внутри него. В обоих API строка является массивом строк, содержащих 
данные этой строки, и ничем более. Доступ к этим данным осуществляется по 
индексу массива в порядке, определяемом запросом. Например, для запроса SELECT 
user_id , password FROM users индекс 0 указывает на имя пользователя и индекс 1 
-на пароль. Наш C++ API делает это индексирование несколько более дружественным 
для пользователя. GetField(1) возвратит первое поле, или f ields[0]. Пример 
13-12 содержит полный листинг исходного кода для класса Row.
Пример 13-12. Реализация класса Row
#include  
#include "row.h"
Row::Row(T_RESULT *res, T_ROW row) {
fields = row;
result = res; }
Row::"Row() {
if( ! IsClosed() ) {
Close(); 
}
}
void Row::Close() {
if( IsClosed() ) {
throw "Строка освобождена.";
}
fields = (T_ROW)NULL;
result = (T_RESULT *)NULL; 
}
int Row::GetFieldCount() 
{
if( IsClosed() )
{
throw "Строка освобождена.";
} #if defined(HASJISQL)
return msqlNumFields(result);
#elif defined(HAS_MYSQL)
return mysql_num_fields(result); 
#else
#error Нет соединения с базой данных,
 
<<-[Весь Текст]
Страница: из 157
 <<-