用ASP.NET1.1连接Oracle9i一法及问题解决方案

用ASP.NET1.1连接Oracle9i一法及问题解决方案

经过两天的奋斗,查阅无数资料(包括GOOGLE,MSDN,CSDN,ITPUB),终于搞定问题多多的连接问题。

现总结如下:

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

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

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

MYORACLE =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = SOFTSTAR)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = myoracle)
    )
  )
 
ORA =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 210.43.104.131)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = ora)
    )
  )

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


SQLNET.AUTHENTICATION_SERVICES= (NTS)

NAMES.DIRECTORY_PATH= (TNSNAMES,HOSTNAME,ONAMES)

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

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

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

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS_LIST =
        (ADDRESS = (PROTOCOL = TCP)(HOST = SOFTSTAR)(PORT = 1521))
      )
    )
  )

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = myoracle)
      (SID_NAME = myoracle)
    )
  )

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

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

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

6,附带程序源码片断

using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Data.OracleClient;

namespace WebApplication1
{
 /// <summary>
 /// testConnOracle 的摘要说明。
 /// </summary>
 public class testConnOracle : System.Web.UI.Page
 { private void Page_Load(object sender, System.EventArgs e)
  {
   // 在此处放置用户代码以初始化页面
   ConnectToOracle();
  }

public void ConnectToOracle()
  {
   OracleConnection conn = new OracleConnection ();//定义oracle连接

//下面是设定连接字符串,其中,data source填上数据库名,即在上文TNSNAMES.ORA 

//中出现的数据源(MYORACLE或者ORA)或者服务名(myoracle或者ora)

   conn.ConnectionString = "user id=system;data source=ora;password=els;";

   try
   {
    conn.Open();
    OracleCommand cmd= new OracleCommand("select * from HR.TEST",conn);
    DataSet ds = new DataSet();
    OracleDataAdapter oda=new OracleDataAdapter();
    oda.SelectCommand=cmd;
    oda.Fill(ds); 
    DataGrid1.DataSource=ds.Tables[0].DefaultView;
    DataGrid1.DataBind();
    Response.Write("Success!");
   }
   catch (Exception ex)
   {
    Response.Write(ex.Message);
   }
   finally
   {
    conn.Close();
   }
  }

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

8,附上可能有用的链接

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值