由于微软在 .Net 框架4.0中已经决定撤销使用 System.Data.OracleClient ,造成在 VS2010 中无法连接 Oracle 数据库,但它还依旧存在于 .Net 架构中,我们可以通过自己引用

C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.Data.OracleClient.dll 来获得对 Oracle 数据库的支持。

1、在 VS2010 中打开[解决方案管理器]--右击[引用]--[添加引用]

2、选择[浏览]找到“ C:\Windows\Microsoft.NET\Framework\v2.0.50727 ”目录,在下面选择 System.Data.OracleClient.dll 之后就可以在程序编辑窗口使用 using System.Data.OracleClient

另外:微软决定撤销 System.Data.OracleClient 内容如下:

对于那些开发 .Net 应用程序而数据库又是 Oracle 的人来说,这则新闻显得特别有意义,微软正打算将 Oracle 数据提供程序从 ADO.NET 路线图中移除。

微软决定撤销 System.Data.OracleClient 是因为有相当数量的 MVP 都倾向于选择第三方 Oracle 数据提供程序,负责 ADO.NET OracleClient 的产品经理 Himanshu Vasishth ADO.NET 团队博客文章中宣布了这一决定。

但在.Net框架4.0中微软将会继续支持 System.Data.OracleClient ,但会被标记为“不宜使用”,根据 Vasishth 的说法,这对现有的应用程序没有任何影响,它们将会按预期运转得很好。

他在文章中提到“使用 OracleClient 开发新的应用程序仍然是可行的,但在 .Net 4.0 中编译时会弹出一个警告对话框,编译好后,运行时不会再弹出警告对话框,我们强烈建议用户使用我们合作伙伴的 ADO.NET Provider for Oracle 代替微软 OracleClient 进行新应用程序的开发”。

第三方提供 Oracle 数据提供程序的有 DataDirect Devart 科技公司,此外还有 Oracle 公司的数据提供程序,叫做 Oracle Data Provider for .NET (ODP.NET) ,这些都是很流行的 Oracle 数据库提供程序。

位于纽约的新技术公司twentysix首席执行官 Andrew Brust 在一封电子邮件中说“ Oracle 自身对 ADO.NET 的支持以及 Visual Studio 本身已经被人们普遍看好, Oracle 公司有一个专职的 ADO.NET 团队,他们已经做得非常好了”。

微软最有价值专家本杰明认为微软这个决定非常有意义,微软为社么要卑躬屈膝支持连接到竞争对手的数据库呢?特别是有调查数据显示微软的客户都倾向于转向 Oracle ,微软肯定会不爽。同时,这也省去了微软 .Net Oracle 的版本控制或性能问题。

微软表示将继续提供 bug 修复和关键更新,但这一切都仅限于 .Net 框架4.0中,以后就难说了

连接 oracle 数据库异常 System.Data.OracleClient 需要 Oracle 客户端软件 8.1.7 或更高版本

本人在用公司用 C# 写的服务连接数据库 oracle 时,报出上面的错误:连接 oracle 数据库异常 System.Data.OracleClient 需要 Oracle 客户端软件 8.1.7 或更高版本。在网上查了好多,试了都没有用,但是通过网上查询,说是找不到 oracle oci.dll 文件,故在系统环境配置中, PATH 中加上我自己 oracle client 的安装路径: D:\app\admin\product\11.2.0\client_1\BIN; 即可,如果 PATH 中之前本来有内容,则在 D:\app\admin\product\11.2.0\client_1\BIN 此目录前加上;

一、点击 “高级系统设置”;

二、点击环境变量

三、编辑修改
这里写图片描述

asp.net 连接 oracle ,报错误。“ System.Data.OracleClient 需要 Oracle 客户端软件 8.1.7 或更高版本。

使用 Oracle 数据库不一定要安装客户端

System.Data.OracleClient 需要 Oracle 客户端软件 8.1.7 或更高版本。

1.下载 instantclient_11_2 ,解压到任意目录下
这里写图片描述

2.在配置一下环境变量。

系统变量:在 Path 中,加入 dll 的路径;eg: D:\Program Files\PremiumSoft\Navicat Premium\instantclient_11_2

用户变量:加一个 ORACLE_HOME ,也是这个路径;

3.重启电脑(重要)

1. Navicat Premium 配置连接 Oracle 数据库,

可能出现的错误:

  1.连接数据库`cannot load OCI DLL,193`
  1.还有一个可能就是`126`的错误,都是这个`oci.dll`问题导致

C#实现不安装Oracle客户端访问远程服务器数据

在未安装Oracle数据库客户端的前提下,C#通过使用ADO的方式远程访问服务器,会出现:“System.Data.OracleClient 需要 Oracle 客户端软件 8.1.7 或更高版本”问题,本文提供一种方式解决该问题。
具体步骤步骤如下:

第一步:下载Instant Client 文件

Oracle官方网站提供了Instant Client文件的下载,下载地址为:http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html,里面提供了支持不同操作系统和不同Oracle版本的对应下载,根据不同需求自己选择。

我的系统环境如下:

数据库服务器:WindowsServer2008x64

数据库服务端:oracle11.2.0.1.0

客户端系统:Windows7x64

因此我选择下载了instantclient-basic-win-x86-64-11.2.0.1.0.zip
只需在客户端将其解压即可(位置任意),我解压在d盘根目录,生成一个文件夹d:\instantclient_11_2(然后将其修改成oracleclient,根据自己需要修改),里面就是连接远程数据库要用到的dll文件。

第二步:配置环境变量

1、 在PATH变量中增加【;D:\oracleclient】,即就是刚才我们解压Instant Client所在的目录;

2、增加以下三个变量:

NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK
TNS_ADMIN= D:\oracleclient
LD_LIBRARY_PATH= D:\oracleclient

第三步:配置tnsnames.ora文件

D:\oracleclient目录中增加一个tnsnames.ora文件,内容为访问数据库的配置信息。具体步骤为:新建一个txt文档,然后将一下内容复制进去,另存为tnsnames.ora即可。

ORCL=
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS =
        (PROTOCOL = TCP)
        (HOST = 192.168.1.107)
        (PORT = 1521)
    (CONNECT_DATA =
      (SERVICE_NAME = lottery) 

其中的HOST、PORT、SERVICE_NAME需要根据数据库实际信息进行修改。
说明,以下需要根据实际情况修改:

HOST = 服务器地址IP 或服务器名称
PORT = 服务器端口号,默认为“1521
SERVICE_NAME = 服务器数据库服务的名字,默认为:”orcl“

此时在C#代码中的连接字符串可以按如下方式定义:

String conn = @"DataSource=ORCL;Persist Security Info=True;User Id=用户名;Password=密码";

否则,如果想省略第三步,在C#代码中的连接字符串必须按如下方式定义:

String conn = String.Format("Data Source=(DESCRIPTION = (ADDRESS_LIST = (ADDRESS= (PROTOCOL = TCP)(HOST = 192.168.1.107)(PORT = 1521))) (CONNECT_DATA=(SERVICE_NAME = lottery) ) );User Id=用户名;Password=密码;");

第四步:重启系统

C#代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.OracleClient;
namespace TestOracle
    class Program
        static void Main(string[] args)
            String conn = @"Data Source=ORCL;Persist Security Info=True;User Id=testdb;Password=manager";
            String conn1 = String.Format("Data Source=(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.107)(PORT = 1521))) (CONNECT_DATA =(SERVICE_NAME = lottery) ) );User Id=testdb;Password=manager;");
            OracleConnection oc = new OracleConnection(conn);
                oc.Open();
                OracleCommand cmd = oc.CreateCommand();
                cmd.CommandText = "select sysdate from dual";
                OracleDataReader odr = cmd.ExecuteReader();
                while (odr.Read())
                    Console.WriteLine(odr.GetDateTime(0).ToString());
            catch (Exception ex)
                Console.WriteLine(ex.Message);
            finally
                oc.Close();
            Console.Read();

运行结果:
这里写图片描述

由于微软在.Net框架4.0中已经决定撤销使用System.Data.OracleClient,造成在VS2010中无法连接Oracle数据库,但它还依旧存在于.Net架构中,我们可以通过自己引用C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.Data.OracleClient.dll 来获得对Oracle数据库的支持。方法:1...
Oracle Instant Client 11.2.0.1.0是轻量级Oracle客户端,用于连接访问Oracle 9i、10g、11g 11.2.0.1.0版本的Oracle数据库Oracle Instant Client11.2.0.1.0 安装程序包含OCI/ OCCI、JDBC-OCI SDK(软件开发工具包),软件开发时所需的全部头文件和链接库。 此版本不支持 Pro*C/C++和.NET程序所需的Oracle Provider for OLE DB,如需支持上述功能,请访问并下载ODAC(Oracle Data Access Components,其包含 ODP.NET, Oracle Services for MTS, Oracle Providers for ASP.NET):  http://www.oracle.com/technetwork/database/windows/downloads/utilsoft-087491.html  http://www.oracle.com/technetwork/cn/database/windows/downloads/index-101312-zhs.html 此版本集成了Oracle 11g 11.2.0.1.0中的实用工具tnsping、exp/imp,支持 Object Browser、TOAD等 Oracle 管理工具,并在Windows XP、Windows Vista、Windows 7平台下测试通过。 1. 请勿使用高版本的exp/imp工具对低版本的Oralce数据库进行导出,导入操作。 2. 安装完成后需手工配置 %TNS_ADMIN%\tnsnames.ora 文件,内容如下: ??? = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = xxx.xxx.xxx.xxx)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = xxxxxx) 1. 将 ??? 改为任意名字,这个名字将在你的程序或程序配置中用到。 2. 将 xxx.xxx.xxx.xxx 改为要连接Oracle 服务器的机器名或IP地址。 3. 将 xxxxxx 改为要连接Oracle 服务器的 SID,如不知道 SID,请询问安装 Oracle 数据库的管理人员。 相关网站: Oracle Instant Client 主页 http://www.oracle.com/technetwork/database/features/instant-client/index-100365.html Oracle Instant Client 常见问题 http://www.oracle.com/technetwork/database/features/oci/ic-faq-094177.html#A3661 SQL*Plus http://download.oracle.com/docs/cd/E11882_01/server.112/e16604/apd.htm#sthref3169 OCI(Oracle Call Interface) http://download.oracle.com/docs/cd/E11882_01/appdev.112/e10646/oci01int.htm#i423362 OCCI(Oracle C++ Call Interface) http://download.oracle.com/docs/cd/E11882_01/appdev.112/e10764/install.htm#CACFFGHF 如需源码或技术支持: Email: gosearcher@gmail.com
      在用VSTS2005/2008+Oracle9做环境连接Oracle时候,在VS 开发服务器运行正常,但IIS服务器调试和部署会报错!       IIS服务器报错:System.Data.OracleClient 需要 Oracle 客户端软件 8.1.7 或更高版本。 出错的原因: 1.虽然报的是需要安装客户端8.1.7及以上版本,实际是.net账户没有访问Oracle\bin...
遇到这个问题的时候,上网查了各种解决办法,发现大多数都是只有解决的一部分,没有一个彻底解决问题,这是本人一天的努力成果,希望大家能节省时间,更快解决问题。 这个是需要电脑安装oracle客户端,最起码安装客户端,安装后然后需要修改安装目录的权限以及系统环境变量。 整个流程如下: 1、下载Oracle10gClient.exe ,本人上传了软件,可供下载: https://download....
  在编写事务控制时发现无法调试到运行SQL语句那一步,并且报出System.Data.OracleClient.OracleException:“ORA-00911: 无效字符 的错误,通过提示可以判断是编写的程序中有不符合的字符出现,这是对数据库的操作,所以首先查看SQL语句能否在数据库中执行,通过测试是可以执行的,而其他调试内容中编写事务的开始、提交、回滚是没有问题的,经过查找最终在SQL中发现末尾多了个 ; 在数据库中执行是没有问题,但是这c#运行时还是不行,删了就好了。
在.NET中使用System.Data.OracleClient连接Oracle数据库的步骤 1.下载并安装Instant Client Instant Client可以在Oracle官方网站下载到 对于Windows,Instant Client有三种版本: 1)适用于 Micro...
如果不想让客户机装Oracle客户端,你可以使用Oracle.ManagedDataAccess.Client,当然,这个只支持连接Oracle10g以上的版本,9i是连不上的。 Oracle.ManagedDataAccess.Client
`torch.utils.data.DataLoader` 是 PyTorch 中用于加载数据的一个重要类。它可以自动地将数据集分成多个批次,并在训练时以迭代器的形式提供数据。 使用方法很简单,只需要将数据集和批次大小传入 `DataLoader` 的构造函数中即可,比如: from torch.utils.data import DataLoader from torchvision import datasets, transforms # 加载 MNIST 数据集 mnist_train = datasets.MNIST('mnist', train=True, download=True, transform=transforms.Compose([ transforms.ToTensor(), transforms.Normalize((0.1307,), (0.3081,)) # 使用 DataLoader 加载数据 train_loader = DataLoader(mnist_train, batch_size=64, shuffle=True) # 迭代训练数据 for data, target in train_loader: # 训练网络 其中 train_loader 为一个迭代器,每次调用 next() 函数即可得到一个批次的数据 你可以使用`num_workers`参数来使用多进程读取数据,可以节省读取数据时间 当然DataLoader也支持并行计算 你可以使用 `torch.utils.data.DataLoader`来创建数据加载器,并可以通过迭代器的形式访问数据 总之,`torch.utils.data.DataLoader` 是 PyTorch 中极其方便的一个类,它可以很好地管理数据的加载和批次的生成。 Unable to preventDefault inside passive event listener due to target being treated as passive. 我也遇见了这个报错,但我是mousewheel事件触发的,这两个方法无效。 windows驱动注册中断服务程序 csphhh: 请教一个问题,如果一个设备有两个中断,中断A,中断B;对应中断程序isr1, isr2;那么在创建中断对象,查询Cmresource的时候,我该怎么确定哪个中断资源对应的中断A,哪个对应中断B呢 Blazor 从入门到放弃 qq6761212: @inject IJSRuntime JS 为啥在组件里用不了呢 group by 和 over(partition by)的区别 cillian_bao: 首先说明一下,第一点就是错的,mysql8.0早已支持开窗函数OVER java与C#的比较 hongerduohao: 观点过时了啊,建议用用最新的.net