Поиск:

Ответ в темуСоздание новой темы Создание опроса
> visual c++ ODBC ошибка подключения, ошибка подключения 
:(
    Опции темы
alexander007
Дата 8.4.2010, 22:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 8.4.2010

Репутация: нет
Всего: нет



Подключаюсь к базе следующим образом (visual c++ ODBC). SQLState выдает ошибку HY024. Расшифровывается как invalid attribute value. Подскажите пожалуйста где в строке подключения ошибка.
Код

HENV                    hEnv = NULL;
    HDBC                    hdbcDB = NULL;
    SQLRETURN Result;
    
    SQLCHAR OutConnectionString[250] ; 
    SQLSMALLINT StringLength2Ptr = 0;
    int StrInLen = 0;
    int StrOutLen = 0;
    SQLCHAR InConnectionString[89] = "Driver={PostgreSQL};Server=127.0.0.1;Port=5432;Database=postgres;Uid=postgres;Pwd=12345;";
    //SQLCHAR InConnectionString[81] = "DRIVER={SQL Server};Server=127.0.0.1;Database=Library;Uid=silver;Pwd=silverLight";
    wclog << L" Connect to DataBase" << endl;
    // Allocate environment handle
    Result = SQLAllocHandle (SQL_HANDLE_ENV, SQL_NULL_HANDLE, &hEnv);
    if (Result == SQL_SUCCESS || Result == SQL_SUCCESS_WITH_INFO){
        wclog << L"SQLAllocHandle = SQL_SUCCESS" << endl;
        Result = SQLSetEnvAttr (hEnv, SQL_ATTR_ODBC_VERSION, (void*)SQL_OV_ODBC3, 0);

        if (Result == SQL_SUCCESS || Result == SQL_SUCCESS_WITH_INFO){
            wclog << L"SQLSetEnvAttr = SQL_SUCCESS" << endl;
            // Allocate connection handle
            Result = SQLAllocHandle(SQL_HANDLE_DBC, hEnv, &hdbcDB);

            if (Result == SQL_SUCCESS || Result == SQL_SUCCESS_WITH_INFO){
                wclog << L"SQLAllocHandle = SQL_SUCCESS" << endl;
                // Set login timeout to 5 seconds.
                Result = SQLSetConnectAttr (hdbcDB, SQL_LOGIN_TIMEOUT, (void*)5, 0);

                    StrInLen = sizeof(InConnectionString);
                    StrOutLen = sizeof(OutConnectionString);
                    Result = SQLDriverConnect(hdbcDB, NULL, (SQLCHAR*) InConnectionString, StrInLen ,    (SQLCHAR*) OutConnectionString, StrOutLen ,    &StringLength2Ptr, SQL_DRIVER_PROMPT);
                    
                    if (Result == SQL_SUCCESS || Result == SQL_SUCCESS_WITH_INFO){
                        wclog << L"SQLDriverConnect = SQL_SUCCESS" << endl;
                        int x;
                        cout << "...";
                        cin >> x;
                    }
                    else {
                        SQLHSTMT        hstmt;
                        RETCODE            rcError;
                        SQLCHAR            buffer[SQL_MAX_MESSAGE_LENGTH + 1];
                        SQLCHAR            sqlstate[SQL_SQLSTATE_SIZE + 1];
                        SQLINTEGER        sqlcode;
                        SQLSMALLINT        length;

                        rcError=SQLError(hEnv, hdbcDB, SQL_NULL_HSTMT, sqlstate, &sqlcode, buffer, SQL_MAX_MESSAGE_LENGTH + 1, &length);
                        printf("\n **** ERROR *****\n");
                        printf("         SQLSTATE: %s\n", sqlstate);
                        printf("Native Error Code: %ld\n", sqlcode);
                        int x;
                        cout << "...";
                        cin >> x;
                    }
            }
        }
    }

PM MAIL   Вверх
Gluttton
Дата 9.4.2010, 16:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Начинающий
***


Профиль
Группа: Завсегдатай
Сообщений: 1170
Регистрация: 28.8.2008
Где: Феодосия

Репутация: нет
Всего: 54



Строка подключения вроде бы валидная...

А драйвер PostgreSQL'евский установлен и зарегистрирован?


--------------------
Слава Україні!
PM MAIL   Вверх
alexander007
Дата 9.4.2010, 18:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 8.4.2010

Репутация: нет
Всего: нет



Драйвер установил, psqlODBC. А вот на счет регистрации, при установке ничего не просил регистрировать.
PM MAIL   Вверх
Gluttton
Дата 9.4.2010, 18:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Начинающий
***


Профиль
Группа: Завсегдатай
Сообщений: 1170
Регистрация: 28.8.2008
Где: Феодосия

Репутация: нет
Всего: 54



Посмотри здесь...


--------------------
Слава Україні!
PM MAIL   Вверх
alexander007
Дата 9.4.2010, 18:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 8.4.2010

Репутация: нет
Всего: нет



Настроил драйвер. Там же протестировал, все конектится. При запуске программы та же ошибка. Перезагрузил компьютер, не помогло.
Попробовал построить строку подключения в студии(то же все конектится), выдал строку на 600 символов. Попробовал ее не помогло...
PM MAIL   Вверх
Gluttton
Дата 10.4.2010, 11:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Начинающий
***


Профиль
Группа: Завсегдатай
Сообщений: 1170
Регистрация: 28.8.2008
Где: Феодосия

Репутация: нет
Всего: 54



Запусти программу в отладчике и посмотри на какой строке вылетает ошибка. Может быть дело вовсе и не в строке подключения smile ...


--------------------
Слава Україні!
PM MAIL   Вверх
alexander007
Дата 10.4.2010, 23:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 8.4.2010

Репутация: нет
Всего: нет



Да нет, до этой строки везде возвращает SQL_SUCCESS. А после этой строки возвращает ошибку(SQL_ERROR)

Result = SQLDriverConnect(hdbcDB, NULL, (SQLCHAR*) InConnectionString, StrInLen ,    (SQLCHAR*) OutConnectionString, StrOutLen ,    &StringLength2Ptr, SQL_DRIVER_PROMPT);

, которую я потом определяю..

PM MAIL   Вверх
Gluttton
Дата 10.4.2010, 23:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Начинающий
***


Профиль
Группа: Завсегдатай
Сообщений: 1170
Регистрация: 28.8.2008
Где: Феодосия

Репутация: нет
Всего: 54



Цитата(alexander007 @  10.4.2010,  23:22 Найти цитируемый пост)
Да нет, до этой строки


Цитата(alexander007 @  10.4.2010,  23:22 Найти цитируемый пост)
А после этой строки


Так всё-таки на какой строке вылетает ошибка?


--------------------
Слава Україні!
PM MAIL   Вверх
alexander007
Дата 10.4.2010, 23:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 8.4.2010

Репутация: нет
Всего: нет



на строке подсоединения Result = SQLDriverConnect... возращает ошибку, а до этой строки все вроде как правильно.
PM MAIL   Вверх
Gluttton
Дата 11.4.2010, 00:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Начинающий
***


Профиль
Группа: Завсегдатай
Сообщений: 1170
Регистрация: 28.8.2008
Где: Феодосия

Репутация: нет
Всего: 54



Вот здесь есть пример установки соединения, там дескриптор несколько инача создается...
Может быть поможет... В ODBC я не силен...


--------------------
Слава Україні!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C++: Базы данных"
chipset

Данный форум предназначен для обсуждения вопросов прямым образом связанных с C++ и БД. Так, вопросы только по C++ следует задавать в C++:Общие вопросы а вопросы по абстрактным БД в Базах данных или в соответствующих под-форумах.

Благодарим за понимание.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, chipset.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Базы данных | Следующая тема »


 




[ Время генерации скрипта: 0.0756 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.