При попытке подключиться к удаленной базе данных 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-install.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 в источнике данных, что проблема заключается в одной из библиотек dll ((), поскольку я «создаю» OracleConnectionвыше, прежде чем пытаться ссылаться на него.
Кроме того, выполнение кода переходит к 'catch (NullReferenceException nullExcept)' и переходит прямо к улову OracleException.
Извините за бессвязное, но надеюсь, что это делаетсмысл?Любая помощь / совет приветствуется!