簡體   English   中英

在連接到oracle 10g數據庫時,獲取IOException“從讀取調用中減去一個”

[英]getting IOException “got minus one from a read call” while connecting to oracle 10g database

連接到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項目。 在過去的兩天里遇到了這個問題,但尚未得到解決方案。

請幫忙????

如果面臨使用JDBC連接Oracle 10g的問題,請嘗試以下事項:1。關閉機器的Wi-Fi。 2.停止Oracle服務。 3.啟動Oracle服務。 現在嘗試使用JDBC連接DataBase。 問題現在就解決了。

嘗試在查詢結束時刪除分號

String query = "SELECT * FROM admin";

我只是通過將連接URL替換為:connection = DriverManager.getConnection(“jdbc:oracle:thin:@ // 127.0.0.1:1521/XE","system","sy stem”)來解決問題; 感謝大家的支持。

請嘗試使用此網址

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

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

您可能還想嘗試這個來追蹤您的問題 -

  1. 暫時刪除以下部分

      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()函數的問題。

是一種反復試驗的答案。

希望這可以幫助。

如果執行數據庫關閉命令,則它將不再允許新連接,並且將出現此錯誤。

我也遇到了同樣的問題,我通過將8080端口替換為1521來解決它問題謝謝大家對我這樣的初學者都做得很好

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM