Буду признателен за любые советы по решению этой проблемы.
Я не про-разработчик, а «любитель», который «унаследовал» работу по отчетности (благодаря моему интересу к программированию - классическому примеру «никогда не доброволец»!).
Я пытаюсь получить доступ к базе данных 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 Client 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()
Извините, что так затянуто, но, как вы видите, эта установка довольно сложна ... :)
Я не обладаю достаточной квалификацией, чтобы рассказывать ЭТО свою работу, но буду признателен за любой совет , который я мог бы передать?