package orcal;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class aa {public static void main(String args[]){
ResultSet rs = null;
Statement stmt = null;
Connection conn = null;
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
//类装载器 根据字符串的名字把类的实例new出来,自动向DriverManger注册conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1522:oracle1", "scott", "tiger"); //1521为默认 拿到oracle数据库的连接
stmt = conn.createStatement(); 
rs = stmt.executeQuery("select * from table1"); 
while(rs.next()) { //拿出表中的记录
System.out.println(rs.getString("name"));
System.out.println(rs.getString("age"));
}
}catch (ClassNotFoundException ee) {
ee.printStackTrace();
}catch (SQLException e) {
e.printStackTrace();
}finally {
try {
if(rs != null) {
rs.close();
rs = null;
}
if(stmt != null) {
stmt.close();
stmt = null;
}
if(conn != null) {
conn.close();
conn = null;
}
//后打开先关闭
}catch (SQLException e) {
e.printStackTrace();
}
}}
}java.sql.SQLException: Listener refused the connection with the following error:
ORA-12518, TNS:listener could not hand off client connection
The Connection descriptor used by the client was:
localhost:1522:oracle1at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:261)
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:387)
at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:439)
at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:165)
at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:35)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:801)
at java.sql.DriverManager.getConnection(DriverManager.java:582)
at java.sql.DriverManager.getConnection(DriverManager.java:185)
at orcal.aa.main(aa.java:17)
 

解决方案 »

  1.   

    你的sqlplus可以正确连接吗? 可以看下你的TNS文件listener服务配置对不,或是启动没,呵呵,要再不行就重启下oracle服务
      

  2.   

    jdbc:oracle:thin:@localhost:1522:oracle1使用了1522端口,而不是默认的1521端口。要么在服务器配置静态监听到1522端口要么在实例里设置local_listener
      

  3.   

    我加了监听后,没报错了,不过,没有输出结果,一片空白,这是怎么回事啊
    package orcal;
    import java.sql.*;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    public class aa {public static void main(String args[]){
    ResultSet rs = null;
    Statement stmt = null;
    Connection conn = null;
    try {
    Class.forName("oracle.jdbc.driver.OracleDriver");
    //类装载器 根据字符串的名字把类的实例new出来,自动向DriverManger注册conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1522:abc", "scott", "aaa"); //1522为默认 拿到oracle数据库的连接
    stmt = conn.createStatement(); 
    rs = stmt.executeQuery("select * from table3"); 
    while(rs.next()) { //拿出表中的记录
    System.out.println(rs.getString(2));
    System.out.println(rs.getString(2));}
    }catch (ClassNotFoundException ee) {
    ee.printStackTrace();
    }catch (SQLException e) {
    e.printStackTrace();
    }}
    }
      

  4.   

    如果连接没有问题的话。debug一下你的java程序吧。