Я был бы признателен за любой совет по решению этой проблемы.
Я не профессиональный разработчик, а «любитель», который «унаследовал» работу по составлению отчетов (благодаря моему интересу к программированию — классический пример «никогда не добровольно»!) .
Я пытаюсь получить доступ к базе данных Oracle 10g из C#.
Чтобы все было максимально просто, у меня есть голая форма WPF с одной кнопкой. Внутри события нажатия кнопки у меня есть следующий код (который, кстати, отлично работал в более ранней программе, установленной на другом ПК):
using System.Data;
using System.Data.OracleClient;
...
string oraStr1 = "Data Source=(DESCRIPTION=(ADDRESS_LIST =(ADDRESS=(PROTOCOL=TCP)(HOST=myHost)(PORT=myPort)))(CONNECT_DATA=(SERVICE_NAME=myDB)));Password=myPassword;User ID=myUser;";
DataTable oraTable = new DataTable();
string queryString = "Select surname,forenames from person table where surname = 'Smith'";
using ( OracleConnection oraConnect = new OracleConnection( oraStr1 ) )
{
try
{
OracleCommand OraCmd = new OracleCommand( queryString, oraConnect );
oraConnect.Open();
OracleDataAdapter OraAdapter = new OracleDataAdapter();
OraAdapter.SelectCommand = OraCmd;
OraAdapter.Fill( oraTable );
}
finally
{
oraConnect.Close();
}
Теперь... приложение (C# Express Edition) выполняется на виртуальной машине на удаленном сервере. На моем общем ресурсе на этой ВМ также был установлен клиент Oracle Database 10g Release 2 (10.2.0.1.0).
Кроме того, ИТ-отдел установил у меня компоненты доступа к данным Oracle.
При запуске ODBCAD32 на виртуальной машине драйверы Oracle не отображаются на вкладке драйверов.
Я считаю, что установленный драйвер неисправен, и это не позволяет моей программе инициировать какое-либо соединение. Тем не менее, у меня нет доказательств, и мне интересно, могут ли здесь знающие люди посоветовать, как получить...?
Первые несколько строк сообщения об ошибке IDE гласят:
System.Exception was unhandled
Message="OCIEnvCreate failed with return code -1 but error message text was not available."
Source="System.Data.OracleClient"
StackTrace:
at System.Data.OracleClient.OciHandle..ctor(OciHandle parentHandle, HTYPE handleType, MODE ocimode, HANDLEFLAG handleflags)
at System.Data.OracleClient.OracleInternalConnection.OpenOnLocalTransaction(String userName, String password, String serverName, Boolean integratedSecurity, Boolean unicode, Boolean omitOracleConnectionName)
at System.Data.OracleClient.OracleInternalConnection..ctor(OracleConnectionString connectionOptions)
at System.Data.OracleClient.OracleConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningObject)
at System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnection owningConnection, DbConnectionPool pool, DbConnectionOptions options)
at System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject)
at System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject)
at System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection owningObject)
at System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection)
at System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)
at System.Data.OracleClient.OracleConnection.Open()
Извините за многословие, но, как видите, эта настройка довольно сложна... :)
Я не имею права рассказывать ИТ об их работе, но был бы признателен за любые советы, которые я мог бы передать?