我一直在阅读有关如何从C#win应用程序连接到oracle数据库的信息,但是我一直在“碰壁”。我决定使用odp.net和OCI,这样客户端计算机不需要安装客户端,但是我无法使其正常工作。
我有一个小型测试应用程序,下面显示了代码,在解决方案中,我从oracle OCI中添加了以下dll:oci.dll,orannzsbb11.dll和oraociicus11.dll。它们都与最终的.exe文件放置在一起。
测试代码:
private static string CONNECTION_STRING =
"User Id=hr;Password=hr;Data Source=(DESCRIPTION=" +
"(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=1521))" +
"(CONNECT_DATA=(SID=XE)));Connect Timeout=15;";
static void Main(string[] args)
{
try
{
using (var conn = new OracleConnection(CONNECTION_STRING))
{
conn.Open();
Console.WriteLine("Connection is: {0}", conn.State.ToString());
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
该问题已经在using(…)语句中出现,程序只是停止工作,而我没有任何响应。我需要做些什么才能使OCI正常工作?
最佳答案
为了能够在不安装完整客户端的情况下使用ODP.NET,您需要使用Oracle Instant Client软件包(不能仅从完整的客户端复制库):
Check here以获取要求的描述。
从Oracle v10开始,我强烈建议使用EZCONNECT来简化您的连接字符串。这个怎么样:
private const string CONNECTION_STRING="User Id=hr;Password=hr;"+
+"Data Source=127.0.0.1:1521/XE;Connect Timeout=15;";