FireBird remote connection

IBX, FIBPlus, UIB, ADO, .Net и прочее-прочее-прочее, в общем все, что относится к созданию приложений, работающих с InterBase, Firebird и Yaffil - клиент-серверных, трехзвенных, консольных и т.п.

Модератор: kdv

Ответить
Acidy
Сообщения: 1
Зарегистрирован: 08 авг 2007, 20:48

FireBird remote connection

Сообщение Acidy » 08 авг 2007, 20:56

Здрасте!

Код: Выделить всё

CFBDB::CFBDB(
	char*	DBFileName
	, char*	DBUser
	, char*	DBPwd
){
char *  dpb = NULL,    /* DB parameter buffer */
         *d, *p, *copy;

	short	dpb_length  = 0;
	long l,sweep_interval = 16384;

copy = dpb = (char *) malloc(7);
	p = dpb;
	*p++ = '\1';
	*p++ = isc_dpb_sweep_interval;
	*p++ = '\4';
	l = isc_vax_integer((char *) &sweep_interval, 4);
	d = (char *) &l;
	*p++ = *d++;
	*p++ = *d++;
	*p++ = *d++;
	*p = *d;
	dpb_length = 7;

	/* Add user and password to dpb, much easier.  The dpb will be
	**  new memory.
	*/
	isc_expand_dpb(
		&dpb, (short *) &dpb_length,
		isc_dpb_user_name, DBUser,
		isc_dpb_password, DBPwd, NULL
		);

	if (isc_attach_database(mStatus, 0, DBFileName, &mDB, dpb_length, dpb))
		isc_print_status(mStatus);

	isc_free(dpb);
	free(copy);
}
вызываю так:

Код: Выделить всё

FBDB = new CFBDB("D:\\TEST.FDB", "SYSDBA", "masterkey");
то все нормально работает =), но если так:

Код: Выделить всё

FBDB = new CFBDB("localhost:D:\\TEST.FDB", "SYSDBA", "masterkey");
то на вызове isc_attach_database падает с ошибкой:
First-chance exception at 0x77bc3d50 in 1cv8.exe: 0xC0000005: Access violation reading location 0x00000000.

Как лечить?
Есть где-нибудь пример кода коннекта к удаленной БД используя такую схему и сервер FireBird 2.0?

Заранее спасибо!

Dimitry Sibiryakov
Заслуженный разработчик
Сообщения: 1436
Зарегистрирован: 15 сен 2005, 09:05

Сообщение Dimitry Sibiryakov » 09 авг 2007, 08:36

Никогда и ни при каких обстоятельствах не используй isc_expand_dpb().
И, похоже, у тебя идет двойное освобождение памяти.

Ответить