У меня есть следующий код для подключения к базе данных с использованием ODP.net:
// connection information removed to protect sensitive information
string host = "******";
string sid = "*****";
string connectDescriptor = string.Format("(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST={0})(PORT=1521))(CONNECT_DATA=(SID={1})))", host, sid);
string username = "*****";
string password = "*****";
string connectionString = string.Format("Data Source={0};User ID={1};Password={2};", connectDescriptor, username, password);
OracleConnection conn = null;
try
{
conn = new OracleConnection(connectionString);
conn.Open();
}
catch (OracleException oraex)
{
MessageBox.Show(oraex.ErrorCode + ": " + oraex.Message);
}
finally
{
conn.Close();
}
Вызов Open()
вызывает ошибку, и я не могу много узнать об этом. oraex.ErrorCode
- -2147467259
и oraex.Message
is ""
. Попытка доступа к большинству членов исключенного исключения приводит к исключению NullReferenceException
.
Кроме того, я вижу, что базовым исключением является System.Runtime.InteropServices.ExternalException
.
Что здесь происходит? Из-за исключения InteropServices
я предполагаю, что это как-то связано с COM.
System.Data.OracleClient
. Они в порядке.Кажется, что-то с клиентом оракула. Я столкнулся с аналогичными проблемами с веб-проектами, в то время как консольные проекты работали нормально. Если вы установили 64-битный ODAC, то полностью удалите его и попробуйте с 32-битным. Также дважды проверьте целевую платформу в Visual Studio на "32 бит". Если это сработает, вы можете выполнить поиск в 64-битной установке.