我有以下代码使用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
为""
。尝试访问抛出异常的大多数成员会产生NullReferenceException
。
另外,我可以看到基本例外是System.Runtime.InteropServices.ExternalException
。
这里发生了什么?由于InteropServices
异常,我猜测它与COM有关。
System.Data.OracleClient
。他们没事。答案 0 :(得分:1)
听起来像是oracle客户端的东西。我遇到了与Web项目类似的问题,而控制台项目工作得很好。 如果您安装了64位ODAC,则将其完全卸载并尝试使用32位。另外,在Visual Studio上仔细检查目标平台是“32位”。如果可行,您可以搜索64位安装的错误。