Главная ]
1.2.6.Пример вызова isc_database_info()
Программирование
Базы данных



Следующий код запрашивает размер страницы и число буферов кэша для подключенной БД, затем анализирует буфер результатов:    

 

==========reqinfo.cpp==========

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#include <time.h>

#include <ibase.h>

 

isc_db_handle db;

ISC_STATUS status_vector[20];

short dpb_buf_len=20;

 

char dpb_buf[]={

                isc_dpb_version1,   //версия буфера 

                isc_dpb_user_name,  //начинается кластер параметра имя пользователя

                6,                  //длина этого параметра 6 байт

                'S','Y','S','D','B','A',//строка имени пользователя

                isc_dpb_password,      //начинается кластер пароля пользователя

                9,                                   //длина его 9 байт

               'm','a','s','t','e','r','k','e','y'   //сам пароль

              };

 

int main()

{

 char str[]="c:\\Doc\\Ibgpre\\ibmake\\xsample.gdb";

 

isc_attach_database(status_vector, strlen(str), str,&db,dpb_buf_len,dpb_buf);

 if (status_vector[0] == 1 && status_vector[1])

 {

      isc_print_status(status_vector);

 }

 

 //обьявляем и заполняем буфер запроса о информации

 char db_items[] = {

                    isc_info_page_size,  //информация о размере страницы

                    isc_info_num_buffers,//информация о числе буферов кэша

                    isc_info_end         //конец буфера

                   };

 char res_buffer[40], *p, item;

 int length;

 long page_size = 0L, num_buffers = 0L;

 

 isc_database_info(status_vector,&db, 

                   sizeof(db_items),

                   db_items,sizeof(res_buffer),

                   res_buffer);

 if (status_vector[0] == 1 && status_vector[1]) 

 {

  /* Для ошибок */

      isc_print_status(status_vector);

      return(1);

 }

      /* Выделяет значения возвращенные в буфере результатов. */

 for (p = res_buffer; *p != isc_info_end ; ) 

 {

      item = *p++;

      length = isc_vax_integer(p, 2);

      p += 2;

      switch (item)

      {

       case isc_info_page_size:

             page_size = isc_vax_integer(p, length);

             break;

            case isc_info_num_buffers:

            num_buffers = isc_vax_integer(p, length);

            break;

       default:

            break;

      }

      p += length;

 }

 printf("page_size=%d\nnum_buffers=%d\n",page_size,num_buffers);

 

 if(db)

  isc_detach_database(status_vector, &db);

 

 return 0;

}

 

<< Назад ] Содержание ] Далее >> ]

Дизайн: Piton Alien
Rambler's Top100 Рейтинг@Mail.ru
Сайт создан в системе uCoz