
[英]Unable to find requested .Net framework data provider. It may not be installed
[英]Error “Unable to find the requested .Net Framework Data Provider. It may not be installed”
我正在使用Visual Studio 2008和oracle数据库10g。
我试图像这样连接到后端:
子窗口“服务器资源管理器”。 按下“连接到数据库”并进行下一个链数据连接 - >选择数据源 - > Oracle数据库 - > oracle数据提供程序.Net->继续 - >数据源名称:oraclexe-> Userneme:hr密码:hr - >测试连接(回答“测试连接成功”) - >按钮确定并:
"Unable to find the requested .Net Framework Data Provider. It May not be installed"
我已经对machine.config进行了更改
<add name="Oracle Data Provider for .NET"
invariant="Oracle.DataAccess.Client" description="Oracle Data Provider for .NET"
type="Oracle.DataAccess.Client.OracleClientFactory,
Oracle.DataAccess, Version=2.111.6.20, Culture=neutral, PublicKeyToken=89b483f429c47342" />
但后来同样的错误仍然存在。 该怎么办?
Oracle数据提供程序特定于体系结构。 如果下载64位驱动程序,则需要将应用程序构建为64位(如果目标操作系统为64位,则为AnyCPU)。
问题是Visual Studio是32位,因此您还需要安装32位驱动程序。
一些建议:
总之,您可能使用一个版本的驱动程序用于设计工具,另一个版本用于底层连接。 我知道这听起来很奇怪,但我已经好几次了。 前进的唯一方法就是把它拆开。 如果您从ADO.NET基本连接测试开始,您将发现问题。
下面是一个简单的入门连接。
谢谢,
阿尔
using System;
using System.Data.Common;
using Oracle.DataAccess.Client;
namespace EntityFrameworkForOracle
{
internal class Test1Connection
{
internal void InternalTestRead()
{
using (var con = Database.GetLocalConnection())
{
con.Open();
var cmd = Database.GetCommand(con);
const string sql = @"select *
from TESTTABLE";
cmd.CommandText = sql;
var reader = cmd.ExecuteReader();
while (reader.Read())
{
Console.WriteLine("\t{0}\t{1}", reader[0], reader[1]);
}
reader.Close();
con.Close();
con.Dispose();
cmd.Dispose();
}
}
}
public static class Database
{
private const string ProviderName = "Oracle.DataAccess.Client";
private const string LocalConnectionString = "User Id=system;Password=XXX;Data Source=localhost:XXXX/XXXX;enlist=true;pooling=true";
private static readonly DbProviderFactory Factory = DbProviderFactories.GetFactory(ProviderName);
public static DbCommand GetCommand(DbConnection con)
{
var cmd = Factory.CreateCommand();
if (cmd != null)
{
cmd.Connection = con;
return cmd;
}
return null;
}
public static DbCommand GetCommand(string cmdText, DbConnection con)
{
var cmd = GetCommand(con);
cmd.CommandText = cmdText;
return cmd;
}
public static DbConnection GetLocalConnection()
{
var con = Factory.CreateConnection();
if (con != null)
{
con.ConnectionString = LocalConnectionString;
return con;
}
return null;
}
public static void CloseConnection(OracleConnection connection)
{
connection.Close();
connection.Dispose();
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.