3

连接到 oracle 10g 数据库时出现 IOException:-

Exception in thread "main" java.sql.SQLException: Io exception: Got minus one from a read call

at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:145)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:190)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:363)
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:401)
at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:441)
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:839)
at java.sql.DriverManager.getConnection(DriverManager.java:582)
at java.sql.DriverManager.getConnection(DriverManager.java:185)
at com.myapp.struts.DBConnection.getDBConnection(DBConnection.java:21)
at com.myapp.struts.DBConnection.main(DBConnection.java:31)

Java 结果:1

我的课程代码如下:-

package com.myapp.struts;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

public class DBConnection {
    Connection connection = null;
    public Connection getDBConnection()throws Exception{
    Class.forName("oracle.jdbc.driver.OracleDriver");
    System.out.println("OUTPUUT     ********driver registered");
    connection = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:XE","system","system");
    System.out.println("OUTPUUT     ********connection established");
    return connection;

    }
    public static void main(String args[])throws Exception{
        DBConnection db = new DBConnection();
        ResultSet result = null;
        String query = "SELECT * FROM admin;";
        Connection con = null;
        con = db.getDBConnection();
        System.out.println("OUTPUUT     ********111111111");
        Statement st =con.createStatement();
        result = (ResultSet) st.executeQuery(query);
        while(result.next()){
            System.out.println("OUTPUUT     ********");
            System.out.println(result.getInt(1));
            System.out.println(result.getString(2));
            System.out.println(result.getString(3));
            System.out.println(result.getString(4));
        }
        con.close();


    } 
}

还有一件事我正在使用netbeans ide并开发一个struts项目。从过去两天开始一直在努力解决这个问题,但尚未得到解决方案。

请帮忙????

4

6 回答 6

2

如果在使用 JDBC 连接 Oracle 10g 时遇到问题,请尝试以下操作: 1. 关闭机器的 Wi-fi。2. 停止 Oracle 服务。3. 启动 Oracle 服务。现在尝试使用 JDBC 连接数据库。现在问题将得到解决。

于 2013-07-13T18:41:51.383 回答
1

尝试在查询末尾删除分号

String query = "SELECT * FROM admin";
于 2013-07-06T09:18:08.897 回答
1

我只需将连接 url 替换为:connection = DriverManager.getConnection("jdbc:oracle:thin:@//127.0.0.1:1521/XE","system","sy‌​stem"); 感谢大家的支持。

于 2013-07-08T08:29:58.347 回答
0

试试这个网址

"jdbc:oracle:thin:@//localhost:1521/XE" 

或者,"jdbc:oracle:thin:@//localhost:1521/xe"

您可能还想尝试这个来追踪您的问题 -

  1. 暂时删除以下while部分

       while(result.next()){
            System.out.println("OUTPUUT     ********");
            System.out.println(result.getInt(1));
            System.out.println(result.getString(2));
            System.out.println(result.getString(3));
            System.out.println(result.getString(4));
        }
    
  2. 添加这个代替while循环 -result.first();
  3. 之后也添加这个 -System.out.println(result.getString(1));
  4. 检查您现在是否有任何异常
  5. 如果您没有遇到异常,我认为您在 while 循环中遇到了一个或多个 result.getXXX() 函数的问题。

是一种反复试验的答案。

希望这可以帮助。

于 2013-07-06T09:11:35.693 回答
0

如果执行了数据库关闭命令,那么它将不再允许新的连接,并且会出现此错误。

于 2014-02-28T15:05:11.080 回答
0

我也遇到了同样的问题,我通过将 8080 端口替换为 1521 解决了这个问题 谢谢大家都为像我这样的初学者做得很好

于 2016-08-29T18:57:33.223 回答