Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / isc_attach_database / 16 сообщений из 16, страница 1 из 1
16.01.2004, 03:32
    #32377861
Palermo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
isc_attach_database
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
16.01.2004, 09:52
    #32377991
somebody
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
isc_attach_database
Не знаю поможет или нет, но в любом случае, ОБЯЗАТЕЛЬНО вставить строку
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
16.01.2004, 10:04
    #32378006
Ex_Soft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
isc_attach_database
Вот рабочий кусок кода. Лишнее выбросите.
Код: 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
16.01.2004, 10:07
    #32378021
Ex_Soft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
isc_attach_database
P.S. Первый раз вижу человека, работающего под виндами, который морочится с API :)


А если Service манагера нет? Как тогда версию сервака поличить? Юзеров поманагерить?
_________________
"Hello, word!" - 17 errors 56 warnings
...
Рейтинг: 0 / 0
16.01.2004, 12:37
    #32378316
somebody
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
isc_attach_database
>А если 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
16.01.2004, 13:52
    #32378471
Dnico
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
isc_attach_database
В Delphi 7 есть компонент TIBDatabaseInfo (надо только установить обновление IBX x08). Думаю что BCB тоже должно быть ...

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

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

Вот и я о том же! У человек BCB и Delphi должны быть под рукой, а он родные API пытается использовать. Противоестественно как то
...
Рейтинг: 0 / 0
16.01.2004, 15:08
    #32378644
Ex_Soft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
isc_attach_database
А что подразумевается под этим словом - 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
16.01.2004, 15:37
    #32378704
Ex_Soft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
isc_attach_database
DnicoВ Delphi 7 есть компонент TIBDatabaseInfo
У меня он тоже есть. Ну а как юзеров-то манагерить?
_________________
"Hello, word!" - 17 errors 56 warnings
...
Рейтинг: 0 / 0
16.01.2004, 15:37
    #32378705
Dnico
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
isc_attach_database
Нужно установить обновление IBX (там новые компоненты)
TIBDatabaseInfo


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

Add_User
Modify_User
Delete_User


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

Best regards,
Dnico.
...
Рейтинг: 0 / 0
16.01.2004, 17:46
    #32378956
somebody
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
isc_attach_database
>> А что подразумевается под этим словом - 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
17.01.2004, 08:42
    #32379175
Palermo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
isc_attach_database
Спасибо всем!
Насчет того, что не тем пользуюсь, так это от неграмотности.
Мне просто это все надо впихнуть в activex, поэтому пошел вот так.
Попробую - напишу результаты.
...
Рейтинг: 0 / 0
17.01.2004, 08:52
    #32379176
Palermo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
isc_attach_database
А как все-такки насчет второго вопроса?
P.S. API reference - единственное человеческое описание, которое оказалось доступным, а вообще стоит задача поработать с IB базой из 1с.
...
Рейтинг: 0 / 0
19.01.2004, 09:17
    #32379737
somebody
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
isc_attach_database
>А как все-такки насчет второго вопроса?
Да вообще-то никто не мешает создать диалоговое окно для ввода имени пользователя, пароля и роли, а потом заекспандить это дело через isc_expand_dpb и передать соответствующий dpb в isc_attach_database. А вообще для прикладных прог наверное лучше использовать IBX .

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

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

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


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