Visual Studio 2010 сообщает о нарушении прав доступа для Oracle OCCI 11g при создании соединения - PullRequest
1 голос
/ 18 марта 2012

Когда я пытался создать соединение с Oracle OCCI 11g в Microsoft Visual Studio 2010, я получил сообщение об ошибке ниже:

Необработанное исключение в 0x005a79c9 в OracleOCCI.exe: 0xC0000005: Местоположение чтения нарушения прав доступа 0x316c6561.

Мой код очень прост, как показано ниже:

class DMLDemo
{
private:

    Environment *env;
    Connection *conn;
    Statement *stmt;

public:

    DMLDemo (string user, string passwd, string db)
    {
        env = Environment::createEnvironment (Environment::DEFAULT);
        if(env==nullptr)
            cout << "Failure";


            try
            {
                conn = env->createConnection (user, passwd, db);
        }
            catch (exception* e)
            {
                cout << "Error";
            }


    }

    ~DMLDemo ()
    {
        env->terminateConnection (conn);
        Environment::terminateEnvironment (env);
    }

};


int _tmain(int argc, _TCHAR* argv[])
{
    //01. Test Simple Connection
    try
    {
        DMLDemo demo("scott","Michael1","");
    }
    catch (exception* e)
    {
        cout << e->what();

    }

    getche();


    return 0;
}

Я гуглил некоторые ответы, похоже, что-то не так с совместимостью между версией oracle dll и версией VC.

Кто-нибудь, у кого есть решение для этого? Или просто поменять на VS 2005?

Ответы [ 2 ]

0 голосов
/ 01 января 2014

Я создавал интерфейсы VS08 и VS10 для 32-битной базы данных Oracle 11g (11.2.0). Я обнаружил, что ряд сайтов, предоставляющих occi11x.dll, включая мою собственную установку Oracle, поставляемую в каталоге V9, не были совместимы с консольным приложением VS08. Наконец, мне нужно было доставить проверенные «золотые» двоичные файлы из другого места компании. После того как x86 'gold' dll была установлена ​​в каталоге запуска консоли, тот же самый код функционировал должным образом.

Я ищу такую ​​же пригодность в VS10 occi11x.dll. Пока еще не нашел. Я получаю похожие ошибки после создания окружающей среды. Некоторые библиотеки позволяют мне установить соединение, но ошибка, когда я пытаюсь выполнить ResultSet-> next (), другие не позволяют мне даже выполнить executeQuery (). Я думаю, что Oracle упущен в том, что не справился с этим должным образом.

В «сломанных» библиотеках VS08 иногда указывались правильные даты и размер файла, как в «золотых» библиотеках. Возможно, внутренний поиск dll-ов обнаружит, какие из них работоспособны.

http://www.oracle.com/technetwork/database/occidownloads-083553.html - это сайт, который oracle использует для предоставления различных сценариев, соответствующих Visual Studio. Возможно, их версия VS12 на самом деле более совместима с базой данных Oracle12c.

0 голосов
/ 18 марта 2012

Хорошо, наконец-то я установил VS 2008, и код работает нормально. Похоже, что Oracle DLL, скомпилированная в 2008 году, не будет работать в VS2010.

Возможно, когда-нибудь Oracle сможет опубликовать свои VS2010 Dlls ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...