我正在用 C# 编写一个程序来攻击另一个虚拟机中的 Oracle 12C 数据库,如果我使用 SQL Developer 连接我没有问题,我可以连接并且可以工作。
现在我尝试从代码输入,我得到了问题标题中指示的错误The type initializer for 'Oracle.DataAccess.Client.OracleConnection' throw an exception。
连接字符串如下:
Data Source=(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.87)(PORT = 1521))
(CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = PRUEBA)));
User Id=SYSTEM;Password=PASS;
我已经使用 Oracle.DataAccess 的 v4.0.30319 版本和 v2.0.50727 版本进行了测试。
我已经为 x86 和任何 CPU 编译。
该数据库位于 64 位 WINDOWS SERVER 2012 R2 标准上。
我已经验证机器的两个方向都可以ping通。
我有点绝望,因为我不知道还能尝试什么,如果有人可以帮助我,我将非常感激。
PS:服务的名称不是 TEST,但为了安全起见,我们会这样做
编辑1:
_cnn_string = this.tCadena.Text.ToString();
this._cnn = new OracleConnection(_cnn_string);
try
{
this._cnn.Open();
MessageBox.Show("Conexión correcta!");
}
catch (Exception ex)
{
MessageBox.Show("Error!: " + ex.Message);
}
finally
{ this._cnn.Close(); }
连接字符串放在一个裸文本框中进行测试,如下所示:
Data Source=(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.87)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = PRUEBA)));User Id=SYSTEM;Password=PASS;
最后,我设法通过更改 Oracle 提供程序来解决它,而不是使用Oracle.DataAccess.Client我使用了来自页面https://www.nuget.org/packages/Oracle的Oracle ODP.NET、托管驱动程序 12.2.1100 .ManagedDataAccess/
感谢大家的帮助