前言

关于oracle 数据库如何连接,我一开始以为和mysql 和 sql server一样,写好连接语句然后调用相应的dll。

知道我遇到了两个错误:

1.64位程序不能去驱动32位客户端

2.ORA-06401: NETCMN: 无效的驱动程序指示符

第一个可以在iis 中的应用池配置32位程序支持,然后就不会报这个错误。

但是呢,可能64位和32位的驱动程序指示符不一样然后依然报错,网上说要去下载对应的客户端。

然后呢,我大概了解了一下oracle 数据库的连接方式,它的一个调用方式,原理我们的程序会去调用客户端下面的程序(所以客户端需要配置),所以如果客户端安装错误,或者说客户端是32位而我们程序dll是64位也可能保存。

那么我就想有没有不要驱动的呢,那么来看下oracle 连接的一个历史过程。

正文

Oracle的Oracle.DataAccess.Client

其实也是一个比较完美的方式,那就是吧oracle 安装,目录下的dll,引用到自己的程序中。

连接字符串是user id=xxx,下面介绍微软的是user=xxx。
优点是:

1.不在安装客户端也能访问服务器上的oracle(假设Application Server与DB Server 分开)

2.不需要配置TnsNames.Ora文件

那么有什么缺点呢?就是我们程序64位,那么得找到oracle 64位Oracle.DataAccess.Client,32位去找到32位的,而且版本要对上,也不是单纯的去oracle 数据库下面找就可以。

微软的System.Data.OracleClient

在编程界,微软的名声并不好,为啥子呢?因为坑啊,很多东西维护到一半觉得没有维护的必要了,就赶紧撤离。

就是要配置客户端,然后不建议使用,而且微软也说了,提示过期,刺激吗?所以没有介绍得到必要,除非一些老项目中,作为了解即可。

Oracle.ManagedDataAccess.dll

这种是推荐的方式,也是我最后用来作为解决方案的一种方式。

因为oracle 体恤到开发人员的痛苦,要去找Oracle.DataAccess.Client,所以人家干脆就集成了一把,这就很好了。

使用方式就是下载Oracle.ManagedDataAccess.dll或者在包管理器中下载引用即可食用。

那就这样吧。