MySQL & mSQL

         

и сохраняют сообщения об ошибках


Обе СУБД управляют и сохраняют сообщения об ошибках внутри своих соответствующих API. Поскольку вы не распоряжаетесь этой деятельностью, может возникнуть другая проблема, связанная с запоминанием сообщений об ошибках. В нашем C++ API обработка ошибок . происходит сразу после их возникновения и до того, как приложение сделает новое обращение к базе данных. Если мы хотим продолжить обработку и лишь позднее заняться ошибками, сообщение об ошибке следует скопировать в область памяти нашего приложения.

Результирующие наборы

Класс Result абстрагируется от понятий результатов MySQL и mSQL. Он должен обеспечивать доступ как к данным результирующего набора, так и к сопутствующим этому набору метаданным. Согласно объектной модели на рис. 13-1, наш класс Result будет поддерживать циклический просмотр строк результирующего набора и получение числа строк в нем. Ниже в примере 13-8 приведен заголовочный файл класса Result.

Пример 13-8. Интерфейс класса Result в result.h

#ifndef 1_result_h

#define 1_result_h

#include <sys/time.h>

#if defined(HASJSQL)

#include <msq1.h>

#elif defined(HAS_MYSQl)

#include <mysq1.h>

#endif

#include "row.h"

class Result { private:

int row_count;

T_RESULT *result;

Row *current_row;

public:

Result(T_RESULT *);

~Result();

void Close();

Row *GetCurrentRow();

int GetRowCount();

int Next(); };

#endif // l_result_h

Перемещение по результатам

Наш класс Result позволяет работать с результирующим набором построчно. Получив экземпляр класса Result в результате обращения к методу Query() , приложение должно последовательно вызывать Next() и GetCurrentRow(), пока очередной Next() не возвратит 0. Пример 13-9 показывает, как выглядят эти действия для MySQL и mSQL.

Пример 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)


Содержание  Назад  Вперед







Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий