2 qq1519932709 qq1519932709 于 2014.12.17 01:37 提问

【求助】java使用jdbc连接Oracle 11g ex版本数据库时的问题

我下载Oracle数据库连接驱动类与SqlConnectText.java在同一目录下,是ojdbc6.jar
数据库版本是Oracle11g Express版本,SID是xe
JDK是1.6版本的
然后端口1521正在被监听
这是Java类代码

 import java.sql.*; 
public class SqlConnectTest {
    private static String dbUrl = "jdbc:oracle:thin:@127.0.0.1:1521:xe";  
    private static String theUser = "root";  
    private static String thePw = "root";  

    public static void main(String[] args) {  
       ResultSet rs = null;  
       Connection conn = null;
       Statement stat = null;


       try {  
           Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();  
           DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
           conn = DriverManager.getConnection(dbUrl, theUser, thePw);  
           stat = conn.createStatement();  

           rs = stat.executeQuery("select * from AdminUser");
           while (rs.next()) {  
              System.out.println(rs.getString("username")+"--"+rs.getString("password"));  
           }  
       } catch (Exception e) {  
           e.printStackTrace();  
       } finally {
          if(rs != null) {
            try { rs.close(); } catch(Exception e) {}
          }
          if(stat != null) {
            try { stat.close(); } catch(Exception e) {}
          }
          if(conn != null) {
            try { conn.close(); } catch(Exception e) {} 
          }
       } 
    }  
}  

这是异常信息
D:\F\oracle\sql>javac SqlConnectTest.java -Djava.ext.dirs=./

D:\F\oracle\sql>java -Djava.ext.dirs=./ SqlConnectTest
java.sql.SQLException: Socket read timed out
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:412)
at oracle.jdbc.driver.PhysicalConnection.(PhysicalConnection.java:531)
at oracle.jdbc.driver.T4CConnection.(T4CConnection.java:221)
at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:32)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:503)
at java.sql.DriverManager.getConnection(DriverManager.java:582)
at java.sql.DriverManager.getConnection(DriverManager.java:185)
at SqlConnectTest.main(SqlConnectTest.java:36)
Caused by: oracle.net.ns.NetException: Socket read timed out
at oracle.net.ns.Packet.receive(Packet.java:320)
at oracle.net.ns.NSProtocol.connect(NSProtocol.java:286)
at oracle.jdbc.driver.T4CConnection.connect(T4CConnection.java:1042)
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:301)

实在是不知道出什么问题了,求大家帮忙解答

5个回答

devmiao
devmiao   Ds   Rxr 2014.12.17 04:12

java.sql.SQLException: Socket read timed out
说明连接超时,检查下防火墙、网络、Oracle服务器是否正常运行、用户名、密码。

qq1519932709
qq1519932709 用户名密码都是正确的,我直接用命令行能登录。服务器也在运行
3 年多之前 回复
C_Major
C_Major   2014.12.17 08:36

连接超时,如果想连接自己电脑的Oracle,把127.0.0.1改成localhost,要是服务器的话,检查下防火墙,网络的配置,要是别人的主机的话,那台主机有可能没开机^_^

qq1519932709
qq1519932709 127.0.0.1改成localhost也不行啊
3 年多之前 回复
birdsaction
birdsaction   Ds   Rxr 2014.12.17 09:35

你的数据库是不是网络客户端没有配置,就是oracle的网络适配器? 你可以在其他电脑上 用sqldeveloper 工具连一下,如果连不上 那就是oracle的网络客户端没有配置

birdsaction
birdsaction 回复qq1519932709: 你在局域网的其它电脑上面,用Oracle客户端连接一下试试
3 年多之前 回复
qq1519932709
qq1519932709 是直接用sqlplus从命令行登录吗?如果是的话,我这儿可以连接
3 年多之前 回复
xmt1139057136
xmt1139057136   Rxr 2014.12.18 16:54

Socket read timed out连接超时。
看看你的防火墙、网络、Oracle服务器是否正常运行。oracle的网络适配器是否支持127.0.0.1连接。

qq1519932709
qq1519932709   2014.12.20 10:33

谢谢各位,问题已经解决了,我用myeclipse运行成功了,前面是直接用命令行运行的。(还是不清除那儿错了,但是代码的对的,包也是对了)

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!