连接Oracle时,当前使用的计算机需要安装Oracle的客户端,
换种表达方式:凡是运行具有访问oracle的应用程序(包括.net/java等)的机器需要装oralce客户端;
或者按照附件的说明在当前使用的计算机上进行设置(仅供参考,未试过)
这是怎么回事呢?下面分析一下:
TNS(传输网络监控系统)/SQL.NET 配置文件,而 TNS 必须要 Oracle 客户端。
针对.NET集成开发平台,.NET只集成了必要的操作,没办法完成Oracle这么一个支持分布式的数据库。
说的这些原因很抽象,没有趟不过去的河,没有爬不过去的山,问题总归有解决办法的。
这是一些经典的解决方法:
在设计系统架构时,可将系统部署三层——Client(用户,或使用者操作界面)->应用服务(装oracle客户端)->资料库(oracle)
若是简单的CS模式,不妨试试:采用中间加一层web service就不用在客户端安装oracle客户端了
--------
附件:
c#写出来的winfrom连接oracle,一般都会在客户端装oracle的客户端,不然winfrom连不上oracle数据库。
以下方式是不安装oracle客户端直接连oracle数据库
1、把instantclient-basic-win32-10.2.0.4.zip中的文件解压到指定位置(我本机是解压到D:\oracleclient)
其内面应该包括:BASIC_README、oci.dll、ocijdbc10.dll、ociw32.dll、orannzsbb10.dll、oraocci10.dll、oraociei10.dll、classes12.jar、ojdbc14.jar九个文件.
(注:下载地址:http://www.oracle.com/technology/software/tech/oci/instantclient/htdocs/winsoft.html;需注册用户,我下载的是:instantclient-basic-win32-10.2.0.4.zip)
2、添加tnsnames.ora文件,找一台已经安装oracle数据库的电脑,然后在其安装目录的NETWORK\ADMIN文件夹下面,然后将其修改后添加到D:\oracleclient文件中:
文件tnsnames.ora其内容:
# tnsnames.ora Network Configuration File: D:\oracleclient\tnsnames.ora /*这是此文件地址*/
# Generated by Oracle configuration tools.
ORCL1 =/*这是本机联系Oracle服务器的服务名称,代码中用到*/
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 服务器地址IP 或服务器名称)(PORT = 服务器端口号,默认为“1521“))
)
(CONNECT_DATA =
(SERVICE_NAME = 服务器数据库服务的名字,默认为:”orcl“)
)
)
3、添加注册表内容:(其内容如下,涉及到的文件位置的根据自己需要改)
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment]
"LD_LIBRARY_PATH"="D:\\oracleclient"
"TNS_ADMIN"="D:\\oracleclient"
"NLS_LANG"="AMERICAN_AMERICA.ZHS16GBK"
4、添加环境变量
右键单击“我的电脑”-->“属性”-->“高级”-->“环境变量”-->“系统变量”-->选中“Path”-->“编辑”-->在“变量值”原来的数据后添加";D:\oracleclient"
5、重启计算机
6、进行Oracle数据库的操作(当然进行操作的基础:在此开发项目中——>添加引用——>.NET选项卡,选取System.Data.OracleClient.dll。
并在此cs开头添加:using System.Data.OracleClient;//引用Oracle连接类)