用ASP.NET连接Oracle9i(ASP.NET1.1)

开发 后端
本文介绍了用ASP.NET连接Oracle9i一法及问题解决方案。文中使用的版本为asp.net1.1。

ASP.NET连接Oracle9i采用的方法:利用using System.Data.OracleClient;与添加引用System.Data.OracleClient,版本为1.0.5000.0,来连接oracle数据库。

前提:至少安装ORAcle9I的客户端,并在“控制面板-〉管理工具-〉服务”中打开oracle的监听程序。

具体作法,首先必须将oralce的TNSNAMES.ORA文件中设定数据源名称。例如

ASP.NET连接Oracle9i代码范例:

  1. MYORACLE =  
  2.   (DESCRIPTION =  
  3.     (ADDRESS_LIST =  
  4.       (ADDRESS = (PROTOCOL = TCP)(HOST = SOFTSTAR)(PORT = 1521))  
  5.     )  
  6.     (CONNECT_DATA =  
  7.       (SERVICE_NAME = myoracle)  
  8.     )  
  9.   )  
  10.     
  11. ORA =  
  12.   (DESCRIPTION =  
  13.     (ADDRESS_LIST =  
  14.       (ADDRESS = (PROTOCOL = TCP)(HOST = 210.43.104.131)(PORT = 1521))  
  15.     )  
  16.     (CONNECT_DATA =  
  17.       (SERVICE_NAME = ora)  
  18.     )  
  19.   )  
  20.  

然后,修改oracle目录下的文件SQLNET.ORA为

  1. SQLNET.AUTHENTICATION_SERVICES= (NTS)  
  2.  
  3. NAMES.DIRECTORY_PATH= (TNSNAMES,HOSTNAME,ONAMES)  

注意,主要是要在NAMES.DIRECTORY_PATH中添加TNSNAMES参数。

这样,在cmd中执行tnsping ora或者myoracle就不会出错。

最后,如果要连远程数据库,那么就必须检查远程oralce数据库的安装目录中的LISTENER.ORA文件,确定类似下文。

  1. LISTENER =  
  2.   (DESCRIPTION_LIST =  
  3.     (DESCRIPTION =  
  4.       (ADDRESS_LIST =  
  5.         (ADDRESS = (PROTOCOL = TCP)(HOST = SOFTSTAR)(PORT = 1521))  
  6.       )  
  7.     )  
  8.   )  
  9.  
  10. SID_LIST_LISTENER =  
  11.   (SID_LIST =  
  12.     (SID_DESC =  
  13.       (GLOBAL_DBNAME = myoracle)  
  14.       (SID_NAME = myoracle)  
  15.     )  
  16.   )  
  17.  

这个文件的内容可以用oracle自带的net configuration assistant的工具修改,即修改“监听程序”和“本地网络服务名配置”。

问题解决办法:如果报"ORA-12154: TNS: 无法处理服务名",应该先查本机的sqlnet.ora,看看NAMES.DIRECTORY_PATH是否为(TNSNAMES),如果是,再查本机的tnsnames.ora中是否包含了那个服务名。

附带几个命令:lsnrctl status 和 tnsping 数据源名

附带ASP.NET连接Oracle9i程序源码片断

  1. using System;  
  2. using System.Collections;  
  3. using System.ComponentModel;  
  4. using System.Data;  
  5. using System.Drawing;  
  6. using System.Web;  
  7. using System.Web.SessionState;  
  8. using System.Web.UI;  
  9. using System.Web.UI.WebControls;  
  10. using System.Web.UI.HtmlControls;  
  11. using System.Data.OracleClient;  
  12.  
  13. namespace WebApplication1  
  14. {  
  15.  /// < summary>  
  16.  /// testConnOracle 的摘要说明。  
  17.  /// < /summary>  
  18.  public class testConnOracle : System.Web.UI.Page  
  19.  { private void Page_Load(object sender, System.EventArgs e)  
  20.   {  
  21.    // 在此处放置用户代码以初始化页面  
  22.    ConnectToOracle();  
  23.   }  
  24.  
  25. public void ConnectToOracle()  
  26.   {  
  27.    OracleConnection conn = new OracleConnection ();//定义oracle连接  
  28.  
  29.  
  30. //下面是设定连接字符串,其中,data source填上数据库名,即在上文TNSNAMES.ORA   
  31.  
  32. //中出现的数据源(MYORACLE或者ORA)或者服务名(myoracle或者ora)  
  33.  
  34.    conn.ConnectionString = "user id=system;data source=ora;password=els;";  
  35.  
  36.    try 
  37.    {  
  38.     conn.Open();  
  39.     OracleCommand cmd= new OracleCommand("select * from HR.TEST",conn);  
  40.     DataSet ds = new DataSet();   
  41.     OracleDataAdapter oda=new OracleDataAdapter();   
  42.     oda.SelectCommand=cmd;   
  43.     oda.Fill(ds);   
  44.     DataGrid1.DataSource=ds.Tables[0].DefaultView;   
  45.     DataGrid1.DataBind();   
  46.     Response.Write("Success!");  
  47.    }  
  48.    catch (Exception ex)  
  49.    {  
  50.     Response.Write(ex.Message);  
  51.    }  
  52.    finally 
  53.    {  
  54.     conn.Close();  
  55.    }  
  56.   }  
  57.  

另外,可以在VS2003中拖出一个OracleConnection来测试,是否能与oralce数据库连上。

最后,附上可能有用的链接

http://community.csdn.net/Expert/topic/4443/4443598.xml?temp=.3260309

http://bbs.chinaunix.net/archiver/?tid-651387.html

http://community.csdn.net/Expert/topic/4634/4634614.xml?temp=.5633051

http://blog.csdn.net/hiyaolee/archive/2005/10/20/509767.aspx

http://blog.csdn.net/xmltea/archive/2005/01/24/265754.aspx

【编辑推荐】

  1. ASP.NET MVC分页控件的实现
  2. ASP.NET MVC实例:使用Northwind和Entity框架
  3. 戏说ASP.NET的解释原理
  4. ASP.NET cookie操作心得一览
  5. ASP.NET获得当前插入行主键的代码
责任编辑:book05 来源: csdn
相关推荐

2009-07-29 15:51:29

ASP.NET中执行w

2009-07-29 14:59:26

asp.net1.1ASP.NET2.0

2009-07-29 15:17:42

验证控件ASP.NET1.1ASP.NET2.0

2009-07-29 15:58:54

静态文件处理ASP.NET

2009-07-29 11:46:22

asp.net1.1

2009-07-29 15:06:16

asp.net1.1asp.net2.0

2009-08-03 14:22:33

什么是ASP.NET

2009-07-28 17:17:19

ASP.NET概述

2009-07-22 17:45:35

ASP.NET教程

2009-07-29 11:29:16

ASP.NET1.1ASP.NET2.0

2009-07-29 16:04:39

ASP.NET1.1验

2009-07-27 12:22:03

ASP.NET和ASPASP.NET入门教程

2009-07-29 15:42:37

asp.net1.1开

2009-08-10 13:32:15

ASP.NET TimASP.NET组件设计

2009-07-29 16:08:07

ASP和ASP.NET

2009-07-29 17:11:25

ASP.NET ISA

2009-08-03 17:35:07

ASP.NET WebASP.NET编程工具

2009-07-28 09:02:32

asp.net aja

2009-08-03 13:38:18

ASP.NET编程模型

2011-08-01 23:34:34

ASP.NETOracle
点赞
收藏

51CTO技术栈公众号