Ошибка при попытке подключения к базе данных Oracle 10g из программы C #, использующей минимальную конфигурацию настройки

У меня возникла ошибка при попытке подключиться к удаленной базе данных Oracle 10g из разрабатываемого мной приложения C # 2008 Express Edition. Я пытаюсь использовать минималистский, ненавязчивый подход к разработке с целью развертывания ClickOnce на рабочих станциях пользователей.

В отношении вышеизложенного я исследовал следующие документы (среди других ..) -

Какая минимальная настройка требуется для развертывания приложения .NET с клиентом Oracle 11?

http: // jeremybranham .wordpress.com / 2011/04/25 / Oracle-Instant-client-with-odp-net /

http://ora-00001.blogspot.com/2010/01/odpnet-minimal-non-intrusive- установить.html

http://splinter.com.au/using-the-new-odpnet-to-access-oracle-from-c

Подключитесь к Oracle с помощью odp.net и OCI из C #

В видя ошибку, которую я испытал, я создал простое тестовое приложение. состоящий из одной (wpf) страницы с одной кнопкой. В случае нажатия кнопки я пытаюсь создать соединение с базой данных Oracle -

private void button1_Click( object sender, RoutedEventArgs e )
{
    OracleConnection oraConnect;

    // string previously used OK in other projects
    string connectionString = "Data Source=" +
           "(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = myServer)(PORT = 1521)))" +
           "(CONNECT_DATA =(SERVICE_NAME = myOracleDb)))" +
           ";Password=myPw;User ID=myID;";

    using ( oraConnect = new OracleConnection( connectionString ) )
    {
        try
        {
            if ( oraConnect.State == ConnectionState.Closed )
            {
                oraConnect.Open();
                MessageBox.Show( "oraConnect is attempting to open.." );
            }
            else
                MessageBox.Show( "oraConnect open to DB: " + oraConnect.ServerVersion.ToString() );
        }
        catch ( NullReferenceException nullExcept )
        {
            MessageBox.Show( "Caught error: ." + nullExcept.ToString() );
        }
        catch ( OracleException dbEx )
        {
            MessageBox.Show( "OraException - " + dbEx.Message.ToString());
        }
        catch ( Exception ex )
        {
            Exception current;
            current = ex;

            while ( current != null )
            {
                current = current.InnerException;
            }

            MessageBox.Show( "Db base exception - " + ex.GetBaseException().ToString() );
        }
        finally
        {
            oraConnect.Close();
        }
    }
}

Следуя информации в приведенных выше статьях, я убедился, что следующие Dll находятся в моей папке «bin» -

• oci .dll
• ociw32.dll
• orannzsbb10.dll
• oraocci10.dll
• oraociicus.dll
• msvcr71.dll

(последний назван в отчаянии ...) и имеет ссылку на Oracle.DataAccess.dll.

Сообщение об ошибке (в 'catch (OracleException dbEx)') -

"Oracle.DataAccess.Client.OracleException was caught
  Message=""
  StackTrace:
       at Oracle.DataAccess.Client.OracleException.HandleErrorHelper(Int32 errCode, OracleConnection conn, IntPtr opsErrCtx, OpoSqlValCtx* pOpoSqlValCtx, Object src, String procedure)
       at Oracle.DataAccess.Client.OracleException.HandleError(Int32 errCode, OracleConnection conn, IntPtr opsErrCtx, Object src)
       at Oracle.DataAccess.Client.OracleConnection.Open()
       at OracleConnectionTest.Window1.button1_Click(Object sender, RoutedEventArgs e) in C:\Documents\Visual Studio 2008\Projects\OracleConnectionTest\OracleConnectionTest\Window1.xaml.cs:line 69
  InnerException: "

Line 69 is 'oraConnect.Open();'.

Кроме того, сообщается следующее -

"((Oracle.DataAccess.Client.OracleException)($exception)).DataSource' threw an exception of type 'System.NullReferenceException".

Я предполагаю из NullReferenceException в источнике данных, что проблема заключается в одном из dlls '(?), поскольку я создаю новое соединение OracleConnection, описанное выше, прежде чем пытаться ссылаться на него.

Кроме того, при выполнении кода перескакивает 'catch (NullReferenceException nullExcept)' и переходит прямо к ловушке OracleException.

Простите за бессвязный разговор, но надеюсь, что это имеет смысл? Любая помощь / совет приветствуются!

8
задан Community 23 May 2017 в 11:44
поделиться