我在PC上安装了Oracle客户端版本10g(注册表ORACLE_BASE-D:\ oracle \ product \ 10.2.0)。 我添加了以下参考资料。 System.Data.OracleClient的。
我收到上述错误。 以下是代码段。
public static OracleConnection getConnection()
{
try
{
dataSource = new SqlDataSource();
dataSource.ConnectionString = System.Configuration.ConfigurationManager.AppSettings.Get("conn");
OracleConnection connection = new OracleConnection();
if (dataSource == null)
{
// Error during initialization of InitialContext or Datasource
throw new Exception("###### Fatal Exception ###### - DataSource is not initialized.Pls check the stdout/logs.");
}
else
{
connection.ConnectionString = dataSource.ConnectionString;
connection.Open();
}
return connection;
}catch (Exception ex)
{
throw ex;
}
}
请让我知道关注的范围和我失踪的地方。我是Oracle和Asp.Net组合的新手。
答案 0 :(得分:3)
看起来您正在使用Microsoft oracle客户端。我建议您使用ODP.net驱动程序,因为它更可靠。 (我相信微软客户端也被弃用了?)
http://www.oracle.com/technetwork/topics/dotnet/index-085163.html
安装ODP.net驱动程序,在项目中添加对Oracle.DataAccess的引用,你就可以了!示例代码(来自我的previous post):
using System;
using System.Data;
using Oracle.DataAccess.Client;
static class Program
{
[STAThread]
static void Main()
{
TestOracle();
}
private static void TestOracle()
{
string connString =
"Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)" +
"(HOST=servername)(PORT=1521)))" +
"(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=servicename)));"+
"User Id=username;Password=********;";
using (OracleConnection conn = new OracleConnection(connString))
{
string sqlSelect = "SELECT * FROM TEST_TABLE";
using (OracleDataAdapter da = new OracleDataAdapter(sqlSelect, conn))
{
var table = new DataTable();
da.Fill(table);
if (table.Rows.Count > 1)
Console.WriteLine("Successfully read oracle.");
}
}
}
}
编辑:之前我还遇到过“需要Oracle客户端软件版本8.1.7或更高版本”的错误。我是因为在我的计算机上安装Oracle客户端造成的。如果您使用Microsoft驱动程序,则可以尝试从计算机上卸载Oracle客户端。
答案 1 :(得分:2)
基本上在这种情况下, System.Data.OracleClient 需要访问一些不属于.Net的oracle dll。解决方案:
答案 2 :(得分:1)
“我在我的电脑上安装了Oracle客户端版本10g” “System.Data.OracleClient需要Oracle客户端软件版本8.1.7或更高版本”
您正在使用Microsoft Oracle Client,并且在.NET Framework 4.0中对System.Data.OracleClient中的类型进行了折旧并将被删除 来自.NET的未来版本 http://msdn.microsoft.com/en-us/library/77d8yct7.aspx
检查计算机上是否还有较旧的Oracle客户端(8或更低版本)。 PATH变量可能仍指向较旧的Oracle客户端bin目录。 如果你从Windows命令行运行'tnsping',如果你没有看到版本10,那么它仍然默认为旧版本。
在安装较新的Oracle客户端之前,首先卸载所有现有的oracle客户端始终是个好主意。 然后安装Oracle数据库服务器和您组织支持的最高版本的oracle客户端。
您可能想要尝试Oracle Client 11g R2并安装适用于.NET的Oracle数据提供程序 http://www.oracle.com/technetwork/topics/dotnet/index-085163.html
如果您使用的是.NET Framework 4.0或更高版本,则在Visual Studio项目中添加对Oracle.DataAccess的引用时, 确保此dll是4.x.x.x,否则浏览到您的客户端位置并选择4.x.x.x dll
答案 3 :(得分:1)
仍需要在客户端计算机上安装Oracle客户端软件以允许连接到Oracle数据库。数据库用户是SQL * Net,它是Oracle数据库的Oracle连接层。 System.Data.OracleClient
dll不提供此功能。
编译代码时,还必须包含对DLL的引用。例如,如果要编译C#程序,则命令行应包括:
喜欢: - csc /r:System.Data.OracleClient.dll