本文展示如何在.NET中创建到Oracle数据库的连接。
一、配置连接字符串
在webconfig中配置连接字符串
<connectionStrings>
<add name="OracleDatabase" connectionString="Data Source=192.1.1.33;User ID=Raymond;Password=123456;Load Balance Timeout=1000" providerName="System.Data.OracleClient"/></connectionStrings>
其中192.1.1.33是IP地址
二、测试连接
我这里是用的企业库,直接用System.Data.OracleClient命名空间下的OracleConnection类也可以的:
Database db = DatabaseFactory.CreateDatabase(this.DBConnString);
DbCommand command = db.GetStoredProcCommand(this.ProcedureName);
DBConnString是连接字符串对应webconfig中的配置
这个时候我们会遇到一个错误:
system.data.oracleclient 需要 oracle 客户端软件 8.1.7 或更高版本
由于我测试的服务器上并没有安装Oracle服务器端工具,所以就出现了这个问题,解决办法安装oracle客户端工具到服务器上,于是我安装了Oracle Instant Client — 用于连接 Oracle 数据库的免费工具和库 | Oracle 中国 到服务器上。
这个时候再次运行还是出错,错误信息和这个一样,重启IIS(cmd iisreset
)后就生效了,现在变成了另外的错误:
监听进程不能解析在连接描述符中给出的 Service Name
出现这个错误的原因是没有配置好
这个时候还需要在Oracle客户端配置下,我安装在d盘下的
d:\oracle\ora90\network\admin\tnsnames.ora
用记事本打开这个文件,修改:
在其中添加
192.1.1.33 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.1.1.33)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = sname)
)
)
其中sname
是服务名这个要对应host是oracle服务器的IP地址。这样代码就可以正常运行了。
另外提醒一下,如果没有配置好,还会出现下面类似的错误:
无法处理服务名 等