не работает isc_expand_dpb
Добавлено: 17 май 2006, 12:56
стало нужно написать небольшое приложение для работы с FireBird_1_5. Ну изучил api, здесь на ыоруме примеры посмотрел - всё просто. Только вот не так работает isc_expand_dpb как ожидал.
Вот код
Пример простейший - но видимо чего то я не вижу в нём ошибочного.
Компилил в Visual Studio 6
Результат - буффер dpb_buff заполняется только 4-мя первыми байтами - остальное - нули. Ну и соотв не аттачит базу.
Я конечно могу этот буффер и ручками заполнить - как обычный массив с помощью fprintf и т.п.- и работает. Но обидно - почему так то работать не хочет?
Вот код
Код: Выделить всё
int main(int argc, char* argv[])
{
static char dpb_buff[128], *dpb;
static char user_name[128], password[128];
string database_name="D:\\home\\alex\\AgropromProject\\DB\\agro.gdb";
printf("base: %s\n", database_name.c_str());
isc_db_handle h_db_agroprom=NULL;
isc_tr_handle h_tr_agroprom=NULL;
ISC_STATUS_ARRAY status;
dpb=dpb_buff;
*dpb++=isc_dpb_version1;
*dpb++=isc_dpb_num_buffers;
*dpb++=1;
*dpb++=90;
short dpb_len=dpb-dpb_buff;
strcpy(user_name, "sysdba");
strcpy(password, "masterkey");
dpb=dpb_buff;
isc_expand_dpb(&dpb, &dpb_len, isc_dpb_user_name, user_name, isc_dpb_password, password, NULL);
if (isc_attach_database(status, /*database_name.length()*/0, (char*)database_name.c_str(), &h_db_agroprom, dpb_len, dpb_buff)) {
printf("SQLCODE: %d\n", isc_sqlcode(status));
isc_print_status(status);
return 1;
}
printf("the base Agroprom is attached!\n");
isc_detach_database(status, &h_db_agroprom);
out.close();
return 0;
}
Компилил в Visual Studio 6
Результат - буффер dpb_buff заполняется только 4-мя первыми байтами - остальное - нули. Ну и соотв не аттачит базу.
Я конечно могу этот буффер и ручками заполнить - как обычный массив с помощью fprintf и т.п.- и работает. Но обидно - почему так то работать не хочет?