import java.sql.*;public class TestJDBC { public static void main(String[] args) throws Exception {

Class.forName("oracle.jdbc.driver.OracleDriver");
Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:orcl","system","longtou19871020"); }}
运行时抛出如下异常:
Exception in thread "main" java.sql.SQLException: Listener refused the connection with the following error:
ORA-12505, TNS:listener does not currently know of SID given in connect descriptor
The Connection descriptor used by the client was:
127.0.0.1:1521:orcl
这是什么原因啊?请大家帮忙啊,谢谢了!

解决方案 »

  1.   

    jdbc:oracle:thin:@127.0.0.1:1521:orcl
    换成
    jdbc:oracle:thin:@192.168.0.1:1521:orcl 
    试试
      

  2.   

    你不是连接的你本机上面的oracle吧,如果不是本机的127.0.0.1换成对方IP.
    还有对方的oracle的监听器和服务要启动.
      

  3.   

    是不是监听器服务没起?
    把jdbc:oracle:thin:@127.0.0.1:1521:orcl 改为jdbc:oracle:thin:@localhost:1521:orcl
    服务名是不是orcl?
      

  4.   

    我连的本机上的oracle,服务名要用什么啊?
      

  5.   

    你oracle数据库叫什么名字?把那个Orcl换成你数据库的名字
      

  6.   

    异常里说是你的SID错误
    也就是你要连接的ORACLE的数据库的名字不是orcl 
    请确认
      

  7.   

    这是我一直用的连接类,类是肯定没问题的
    package connection;import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.SQLException;public class DBConnection {

         private final String DBDRIVER = "oracle.jdbc.driver.OracleDriver" ;
         private final String DBURL = "jdbc:oracle:thin:@localhost:1521:TESTORA" ;
         private final String USER = "SYSTEM" ;
         private final String PASSWORD = "MANAGER" ;
         private Connection conn = null ;
         
         public DBConnection() {
          try {
    Class.forName(DBDRIVER) ;
    conn = DriverManager.getConnection(DBURL, USER, PASSWORD);
    } catch (Exception e) {
    e.printStackTrace();
    }
         }
         
         public Connection getConnection() {
          return this.conn ;
         }
         
         public void closeConnection() {
          try {
    conn.close() ;
    } catch (SQLException e) {
    e.printStackTrace();
    }
         }
    }如果和你上述所描述的错误一样,你确定下oracle中这两个服务是 不是开启的OracleOraHome90TNSListener
    OracleServiceTESTORA如过开启的还是出现上述错误,请你查看你的数据库端口号是否已被占用。
      

  8.   

    我把有关oracle的所有服务都开了,如果连接的ORACLE的数据库的名字不是orcl ,那怎么查看连接的数据库是什么?
      

  9.   

    用tnsping命令和sqlplus检查数据库是否正常启动,sid是否是orcl
      

  10.   

    127.0.0.1:1521:orcl 
    建议楼主使用本机器的IP地址