powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / isc_attach_database
16 сообщений из 16, страница 1 из 1
isc_attach_database
    #32377861
Palermo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Hi All!
Я новичок и в C++ и в Interbase.
Если кто-то может мне что-то подсказать - буду премного благодарен.
Есть функция со следующим кодом:
STDMETHODIMP TdbBridgeImpl::SetDBName(BSTR Name)
{
long status_vector[20]; /* status vector */
char dbName[100];
char *uname = "SYSDBA";
char *upass = "masterkey";
char *str = "d:\\Progra~1\\borland\\interbase\\examples\\database\\EMPLOYEE.GDB";
dpb = dpb_buffer;
*dpb++ = isc_dpb_version1;
*dpb++ = isc_dpb_num_buffers;
*dpb++ = 1;
*dpb++ = 90;
dpb_length = dpb - dpb_buffer ;
int i;
for (i = 0; i<=100;i++)
dbName = Name;

isc_expand_dpb(&dpb, (short ISC_FAR *) &dpb_length,
isc_dpb_user_name, uname,
isc_dpb_password, upass, NULL);


isc_attach_database(status_vector, strlen(str), str, &db1,0,0L);

if (status_vector[0] == 1 && status_vector[1])
return S_FALSE;
else
return S_OK;

}
В отладчике после вызова isc_attach_database(....)
status_vector[0] = 1
status_vector[1] =335544472(в Lang. ref написано что
Your user name and password are not defined. Ask your database
administrator to set up an InterBase login.
при просмотре dpb я в нем вижу и username и password.
Вопроса 2.
1. Что мне бедненькому делать(Если быть более корректным, то где моя ошибка).
2. Можно ли через API вызвать окно login к базе данных.
Заранее благодарен.
Допускаю, что ошибка связанна с моей неграмотностью, но уже не вижу где рыться.
...
Рейтинг: 0 / 0
isc_attach_database
    #32377991
somebody
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не знаю поможет или нет, но в любом случае, ОБЯЗАТЕЛЬНО вставить строку
dpb = dpb_buffer
перед вызовом isc_expand_dpb
>isc_expand_dpb(&dpb, (short ISC_FAR *) &dpb_length,
>isc_dpb_user_name, uname,
>isc_dpb_password, upass, NULL);

P.S. Первый раз вижу человека, работающего под виндами, который морочится с API :)
...
Рейтинг: 0 / 0
isc_attach_database
    #32378006
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот рабочий кусок кода. Лишнее выбросите.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
AnsiString __fastcall DLL_EI ServerVersionAPI(AnsiString Path, AnsiString User, AnsiString Password)
{
   AnsiString Ver= "";
 
   TISC_DB_HANDLE db=0 ;
   char *gdb_name= 0 ,*user_name= 0 ,*user_password= 0 ,*dpb_buffer= 0 ,*res_buffer= 0 ;
   ISC_STATUS status_vector[ 20 ];
   short dpb_length= 0 ;
   bool Connected=false;
   int size_res_buffer= 10240 ;

   try
     {
        try
          {
             gdb_name=new char [ 1024 ];
             user_name=new char [ 1024 ];
             user_password=new char [ 1024 ];
             dpb_buffer=new char [ 1024 ];
             res_buffer=new char [size_res_buffer];
          }
        catch(std::bad_alloc)
          {
             throw Exception(ExtractFileName(__FILE__)+"( "+__LINE__+" ): ServerVersionAPI() Insufficient memory ");
          }

        strcpy(gdb_name,Path.c_str());
        strcpy(user_name,User.c_str());
        strcpy(user_password,Password.c_str());

        *(dpb_buffer+dpb_length++)=Ibheader::isc_dpb_version1;
        *(dpb_buffer+dpb_length++)=Ibheader::isc_dpb_user_name;
        *(dpb_buffer+dpb_length++)=strlen(user_name);
        strcpy(dpb_buffer+dpb_length,user_name);
        dpb_length+=*(dpb_buffer+dpb_length-1 );
        *(dpb_buffer+dpb_length++)=Ibheader::isc_dpb_password;
        *(dpb_buffer+dpb_length++)=strlen(user_password);
        strcpy(dpb_buffer+dpb_length,user_password);
        dpb_length+=*(dpb_buffer+dpb_length- 1 );

        isc_attach_database(status_vector,strlen(gdb_name),gdb_name,&db,dpb_length,dpb_buffer);

        if(status_vector[ 0 ]== 1  && status_vector[ 1 ])
          {
             Ver=InterpreteIBErrorCodeAPI(status_vector);
             throw Exception(ExtractFileName(__FILE__)+"( "+__LINE__+" ): ServerVersionAPI() "+Ver);
          }

        Connected=true;

...
...
Рейтинг: 0 / 0
isc_attach_database
    #32378021
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
P.S. Первый раз вижу человека, работающего под виндами, который морочится с API :)


А если Service манагера нет? Как тогда версию сервака поличить? Юзеров поманагерить?
_________________
"Hello, word!" - 17 errors 56 warnings
...
Рейтинг: 0 / 0
isc_attach_database
    #32378316
somebody
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>А если Service манагера нет?
А что подразумевается под этим словом - Service манагер? Это что-то особое, виндовое?

>Как тогда версию сервака поличить?
Любую или почти любую утилиту с параметром -z.
Например : gfix -z
Выдает:
gfix version LI-V1.5.0.4027 Firebird 1.5 Release Candidate 7

>Юзеров поманагерить?
gsec -user sysdba -password masterkey -add newuser -pw newpassword
Ну и так далее... Или при отсутствии Service манагера эти вещи также отсутствуют?
...
Рейтинг: 0 / 0
isc_attach_database
    #32378471
Фотография Dnico
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В Delphi 7 есть компонент TIBDatabaseInfo (надо только установить обновление IBX x08). Думаю что BCB тоже должно быть ...

IBDatabaseInfo1.Version ===> LI-V1.5.0.4027 Firebird 1.5 Release Candidate 7

Best regards,
Dnico.
...
Рейтинг: 0 / 0
isc_attach_database
    #32378489
somebody
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>В Delphi 7 есть компонент TIBDatabaseInfo (надо только установить обновление IBX x08). Думаю что
>BCB тоже должно быть ...

Вот и я о том же! У человек BCB и Delphi должны быть под рукой, а он родные API пытается использовать. Противоестественно как то
...
Рейтинг: 0 / 0
isc_attach_database
    #32378644
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что подразумевается под этим словом - Service манагер? Это что-то особое, виндовое?
Service Manager не только под виндой. Под Linux есть. А FB 1.0.2.908 CS на FreeBSD 4.8, 4 example, - нет.
Любую или почти любую утилиту с параметром -z.
Очень умно. А из своей проги?
Компоненты (вкладка InterBase Admin), позволяющие проделать выше сказанное, работают через Service Manager.
_________________
"Hello, word!" - 17 errors 56 warnings
...
Рейтинг: 0 / 0
isc_attach_database
    #32378704
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DnicoВ Delphi 7 есть компонент TIBDatabaseInfo
У меня он тоже есть. Ну а как юзеров-то манагерить?
_________________
"Hello, word!" - 17 errors 56 warnings
...
Рейтинг: 0 / 0
isc_attach_database
    #32378705
Фотография Dnico
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нужно установить обновление IBX (там новые компоненты)
TIBDatabaseInfo


Best regards,
Dnico.
...
Рейтинг: 0 / 0
isc_attach_database
    #32378711
Фотография Dnico
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для работы с юзерами есть UDF RFUNC

Add_User
Modify_User
Delete_User


Best regards,
Dnico.
...
Рейтинг: 0 / 0
isc_attach_database
    #32378716
Фотография Dnico
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
http://rfunc.sourceforge.net/rus/ - качать ее тут

Best regards,
Dnico.
...
Рейтинг: 0 / 0
isc_attach_database
    #32378956
somebody
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>> А что подразумевается под этим словом - Service манагер? Это что-то особое, виндовое?

>Service Manager не только под виндой. Под Linux есть. А FB 1.0.2.908 CS на FreeBSD 4.8, 4 example, - нет.

Ну вы меня совсем заинтриговали. Я уже по Линухом лет 5 наверное, но первый раз слышу о таинственном Service Manager. Что это такое все таки?

>> Любую или почти любую утилиту с параметром -z.

>Очень умно. А из своей проги?

О боги.... Воистину счастье - это когда тебя понимают... Именно это и имелось ввиду, что под виндой, для разработки подобных программ , уже есть все необходимые компоненты, использовать которые гораздо проще чем самому морочиться с API . Если же надо что-то быстро посмотреть или сделать, то для этого вполне можно использовать всякие gsec, gfix и т.д. , что будет опять таки проще чем писать свои проги с использованием API. Я не говорю что использование API это плохо или нафиг не нужно - просто выражаю удивление, поскольку сам писал подобные проги через API - сразу скажу удовольствие (для меня) ниже среднего.

>Компоненты (вкладка InterBase Admin), позволяющие проделать выше сказанное, работают через
>Service Manager.

P.S. Наверное все флеймы возникают из-за недопонимания
...
Рейтинг: 0 / 0
isc_attach_database
    #32379175
Palermo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо всем!
Насчет того, что не тем пользуюсь, так это от неграмотности.
Мне просто это все надо впихнуть в activex, поэтому пошел вот так.
Попробую - напишу результаты.
...
Рейтинг: 0 / 0
isc_attach_database
    #32379176
Palermo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А как все-такки насчет второго вопроса?
P.S. API reference - единственное человеческое описание, которое оказалось доступным, а вообще стоит задача поработать с IB базой из 1с.
...
Рейтинг: 0 / 0
isc_attach_database
    #32379737
somebody
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>А как все-такки насчет второго вопроса?
Да вообще-то никто не мешает создать диалоговое окно для ввода имени пользователя, пароля и роли, а потом заекспандить это дело через isc_expand_dpb и передать соответствующий dpb в isc_attach_database. А вообще для прикладных прог наверное лучше использовать IBX .

>P.S. API reference - единственное человеческое описание, которое оказалось доступным,

Ну вообще то там в связке есть еще Developer's Guide, в котором есть глава Intorduction to IBX

>а вообще стоит задача поработать с IB базой из 1с.
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / isc_attach_database
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]