请通过步骤给我一个确切的解决方案。
我正在使用netbeans和1.7的jdk 7 updt 9,以下是我的代码。

public class jd {
    public static void main(String[] args) throws ClassNotFoundException, SQLException
{

        Class.forName("oracle.jdbc.driver.OracleDriver");
        Connection con=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1158:ORCL","system", "system");
        System.out.println("Connection successful");
       //Statement s=con.createStatement();

    }

}


输出是

 run:
    Exception in thread "main" java.sql.SQLRecoverableException: IO Error: Got minus one from a read call
        at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:673)
        at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:715)
        at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:385)
        at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:30)
        at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:564)
        at java.sql.DriverManager.getConnection(DriverManager.java:571)
        at java.sql.DriverManager.getConnection(DriverManager.java:215)
        at jd.main(jd.java:22)
    Caused by: oracle.net.ns.NetException: Got minus one from a read call
        at oracle.net.ns.Packet.receive(Packet.java:314)
        at oracle.net.ns.NSProtocolStream.negotiateConnection(NSProtocolStream.java:153)
        at oracle.net.ns.NSProtocol.connect(NSProtocol.java:263)
        at oracle.jdbc.driver.T4CConnection.connect(T4CConnection.java:1360)
        at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:486)
        ... 7 more

Java Result: 1
BUILD SUCCESSFUL (total time: 0 seconds)

最佳答案

我认为该行中的端口号为1158,是错误的:

    Connection con=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1158:ORCL","system", "system");


通常,您使用端口1521连接到Oracle数据库。尝试用1521替换1158。

您的数据库可能正在端口1158上运行企业管理器。这是您经常通过导航到https://localhost:1158/em来访问的Web应用程序。 Oracle数据库本身通常将在端口1521上进行侦听。

使用JDBC时,您需要直接连接到数据库,而不是某些Web应用程序。 Oracle JDBC驱动程序了解它用于与数据库进行通信的专有二进制协议,但不了解它从企业管理器Web应用程序获取的HTTP。因此,您会收到一个奇怪的网络错误。如果尝试将JDBC驱动程序连接到其他非Oracle数据库,则可能会遇到类似的随机网络错误。

07-24 19:05
查看更多