Подключение к БД Oracle используя ODBC/OLE BPMonline 7.3
Добрый день!
Уважаемые знатоки уповаю на вашу помощь!
Уже несколько дней маюсь с подключением к БД Оракл через ODBC и OLE.
ODBCConnection 64 bit driver
string selectCommand = "Select fio from CLIENTSFORCRM";
OdbcConnection cnn = new OdbcConnection(connectionString);
try
{
cnn.Open();
OdbcCommand cmm = cnn.CreateCommand();
cmm.CommandText = selectCommand;
OdbcDataReader rd = cmm.ExecuteReader();
int fCount = rd.FieldCount;
for ( int i = 0; i fCount; i ++ )
{
String fName = rd.GetName(i);
}
cnn.Close();
}
catch (Exception ex)
{
Console.Write(ex.Message);
cnn.Close();
}
Подключение происходит успешно, но при вызове OdbcDataReader rd = cmm.ExecuteReader(), возникает ошибка "Arithmetic operation resulted in an overflow", вне зависимости от запроса SELECT...
Используя параметр в приложении IIS "Enable 32-bit applications" to true" не удается найти драйвер
OLEConnection
OleDbConnection myConnection = new OleDbConnection(sConnectionString);
OleDbCommand myCommand = new OleDbCommand(selectCommand, myConnection);
try
{
myConnection.Open();
OleDbDataReader myReader = myCommand.ExecuteReader();
myConnection.Close();
}
catch(Exception ex)
{
myConnection.Close();
}
Не удается подключиться, при подключении возникает ошибка
ORA-12154: TNS:could not resolve the connect identifier specified.
Наткнулся на решение данной проблемы на сайте Оракла. Но дело в том что с Oracle я не сильно знаком.
Прошу подсказать если кто-то сталкивался с данной проблемой!
Нравится
Здравствуйте, Александр Сергеевич!
По данной проблеме можно сказать следующее.
Есть подозрение, что подключение проходит успешно к серверу, а не к самой базе, потому в первую очередь проверьте корректность подключения к базе следующим lifehack'ом - в Excel'е выберите источник данных ODBC и используйте в нем аналогичную Вашей строку подключения. В случае корректного подключения у Вас должен отобразится список таблиц базы.
Вторым вариантом проверки корректности подключения является, к примеру, TOAD.
Если оба варианта будут неуспешными, попробуйте использовать не OLE, а ODAC.
А также в ora.names на клиенте прописать аналогичную строку подключения.
Здравствуйте, Андрей!
Спасибо за советы по поводу проверки подключения ODBC.
Буду ковыряться. А вот по поводу соединение через ODAC хотелось бы поподробней.
Я так понял что это библиотека визуальных компонентов ODAC (Oracle Direct Access Components).
Получается что это dll-ка? Хотелось бы понять как ее подключить и к ней обращаться, т.к. примеров особо я не нашел в сети...
Или же Вы имеете ввиду Oracle Data Access Components (ODAC)?
т.е. использовать подключение как в примере:
string oradb = "Data Source=ORCL;User Id=hr;Password=hr;"; OracleConnection conn = new OracleConnection(oradb); // C# conn.Open(); OracleCommand cmd = new OracleCommand(); cmd.Connection = conn; cmd.CommandText = "select department_name from departments where department_id = 10"; cmd.CommandType = CommandType.Text; OracleDataReader dr = cmd.ExecuteReader(); dr.Read(); label1.Text = dr.GetString(o); conn.Dispose();
Александр Сергеевич,
Oracle Data Access Components (ODAC).
Прикрепляю dll-ку, но у Вас должна быть по идее аналогичная.
Андрей, подключил я библиотеку Oracle.DataAccess.Client к тестовому консольному приложению в студии, но появляется ошибка при создании объекта OracleConnection conn = new OracleConnection();
При использовании System.Data.OracleClient, возникает ошибка уже на соединении к БД Оракл:
Александр Сергеевич,
а непосредственно Oracle Client у Вас установлен?
Oracle Client установлен 2-х версий 32 и 64 разрядный.
Странно, что dll-ки кроме Oracle.DataAccess не могу подцепить к проекту. Во многих ресурсах пишут что нужно подключать несколько библиотек:
oci.dll (renamed from 'oci.dll.dbl')
Oracle.DataAccess.dll
oraociicus11.dll
OraOps11w.dll
orannzsbb11.dll
oraocci11.dll
ociw32.dll
Но при добавлении в References вылетает ошибка.
Возможно, я что-то делаю не так или что-то упустил...
Установите своему проекту в студии Platform target: x86
Так же уточните пож. входные параметры:
1. Какая операционная система и разрядность
2. Какой Oracle и какой OracleClient ставили (версия и разрядность)
Второй вариант:
Если вы хотите работать полностью в 64-х разрядном режиме то после установки 64-х разрядного клиента у Вас должна лежать библиотека Oracle.DataAcces.dll по пути: C:\Windows\Microsoft.NET\assembly\GAC_64\Oracle.DataAccess\
Если описанное выше в Вашем случае не помогло, то удалите все Oracle клиенты ODAC и что вы там еще ставили и поставьте один 64-х разрядный OracleClient, проверти пути и что зарегистрировано в GAC