Raymond Raymond

[.NET] C#连接Oracle数据库方法

event 2009-12-02 visibility 1,220 comment 0 insights toc
more_vert
insights Stats

本文展示如何在.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地址。这样代码就可以正常运行了。

另外提醒一下,如果没有配置好,还会出现下面类似的错误:

无法处理服务名 等
More from Kontext
comment Comments
No comments yet.

Please log in or register to comment.

account_circle Log in person_add Register

Log in with external accounts