2010-05-03 121 views
0

我在我的开发机器上安装了Oracle XE,并且工作正常。使用ASP.NET将错误连接到远程Oracle XE数据库

然后,我在我的测试机器上安装了Oracle XE客户端,这也正常工作,我可以从浏览器访问开发PC数据库。

现在,我想创建一个可以访问Oracle XE数据库的ASP.Net应用程序。 我也试过,但它总是在我的TEST机器上显示错误,使用ASP.Net将数据库连接到开发机器。

这里是我的ASP.Net应用程序代码:

protected void Page_Load(object sender, EventArgs e) 
     { 
      string connectionString = GetConnectionString(); 

      OracleConnection connection = new OracleConnection(connectionString); 
       connection.Open(); 
       Label1.Text = "State: " + connection.State; 
       Label1.Text = "ConnectionString: " + connection.ConnectionString; 

       OracleCommand command = connection.CreateCommand(); 
       string sql = "SELECT * FROM Users"; 
       command.CommandText = sql; 
       OracleDataReader reader = command.ExecuteReader(); 
       while (reader.Read()) 
       { 
        string myField = (string)reader["nID"]; 
        Console.WriteLine(myField); 
       } 

     } 

     static private string GetConnectionString() 
     { 
      // To avoid storing the connection string in your code, 
      // you can retrieve it from a configuration file. 
      return "User Id=System;Password=admin;Data Source=(DESCRIPTION=" + 
        "(ADDRESS=(PROTOCOL=TCP)(HOST=myServerAddress)(PORT=1521))" + 
        "(CONNECT_DATA=(SERVICE_NAME=)));"; 
     } 
+2

什么错误,你恰好有?这可能是ORA-12541:TNS:没有听众? – 2010-05-03 15:50:48

回答

0

不要你需要一个服务名连接到您的连接字符串中?例如,

return "User Id=System;Password=admin;Data Source=(DESCRIPTION=" + 
        "(ADDRESS=(PROTOCOL=TCP)(HOST=myServerAddress)(PORT=1521))" + 
        "(CONNECT_DATA=(SERVICE_NAME=myDBServiceName)));"; 
+0

我试过但仍然无法工作。 有关信息,我使用Windows Server 2008 - 64位和VS 2008.我的代码在Windows 7 32位下正常工作。 – imsatasia 2010-05-03 19:47:08

+0

这将有助于了解确切的错误消息/代码。 – DCookie 2010-05-03 19:54:52

+0

如果是XE,那么它应该是SERVICE_NAME = XE – 2010-05-03 23:29:59

1

确保oracle监听器已打开。

ps -ef | grep ls 
oracle 3773  1 0 May24 ?  00:00:00 /usr/local/oracle/product/10.2.0.1.0/bin/tnslsnr LISTENER -inherit 

启动这个监听

[[email protected] ~]# su - oracle 
-bash-3.2$ cd $ORACLE_HOME 
-bash-3.2$ cd bin 
-bash-3.2$ ls *ls* 
-bash-3.2$ lsnrctl 

LSNRCTL for Linux: Version 10.2.0.1.0 - Production on 25-MAY-2012 11:53:10 

Copyright (c) 1991, 2005, Oracle. All rights reserved. 

Welcome to LSNRCTL, type "help" for information. 

LSNRCTL> start 

Starting /usr/local/oracle/product/10.2.0.1.0/bin/tnslsnr: please wait... 

TNSLSNR for Linux: Version 10.2.0.1.0 - Production 

System parameter file is /usr/local/oracle/product/10.2.0.1.0/network/admin/listener.ora 

Log messages written to /usr/local/oracle/product/10.2.0.1.0/network/log/listener.log 

Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=rce-dev2.microlink.com.my)(PORT=1521))) 

Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC0))) 


Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=rce-dev2.microlink.com.my)(PORT=1521))) 

STATUS of the LISTENER 

------------------------ 

Alias      LISTENER 

Version     TNSLSNR for Linux: Version 10.2.0.1.0 - Production 

Start Date    25-MAY-2012 11:53:54 

Uptime     0 days 0 hr. 0 min. 0 sec 

Trace Level    off 

Security     ON: Local OS Authentication 

SNMP      OFF 

Listener Parameter File /usr/local/oracle/product/10.2.0.1.0/network/admin/listener.ora 

Listener Log File   /usr/local/oracle/product/10.2.0.1.0/network/log/listener.log 

Listening Endpoints Summary... 

    (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=rce-dev2.microlink.com.my)(PORT=1521))) 

    (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC0))) 

Services Summary... 

Service "PLSExtProc" has 1 instance(s). 

    Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service... 

The command completed successfully 

你可以试试这个

"User Id=System;Password=admin;Data Source=(DESCRIPTION=" + 
        "(ADDRESS=(PROTOCOL=TCP)(HOST=myServerAddress)(PORT=1521))" + 
        "(CONNECT_DATA=(SID=NETBDS)));";*