java.sql.SQLRecoverableException: ошибка ввода-вывода: недопустимый формат номера порта в ubuntu

#java #linux #oracle #jdbc

#java #linux #Oracle #jdbc

Вопрос:

Я использую версию oracle 11g xe.Итак, я установил путь к классу и продолжил работу с программой, но столкнулся с этими ошибками:

 Connecting to database...
    java.sql.SQLRecoverableException: IO Error: Invalid number format for port number
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:478)
at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:547)
at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:225)
at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:29)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:556)
at java.sql.DriverManager.getConnection(DriverManager.java:571)
at java.sql.DriverManager.getConnection(DriverManager.java:215)
at jdbcdisplay.main(jdbcdisplay.java:24)
    Caused by: oracle.net.ns.NetException: Invalid number format for port number
at oracle.net.resolver.AddrResolution.resolveSimple(AddrResolution.java:497)
at oracle.net.resolver.AddrResolution.resolveAndExecute(AddrResolution.java:394)
at oracle.net.ns.NSProtocol.establishConnection(NSProtocol.java:873)
at oracle.net.ns.NSProtocol.connect(NSProtocol.java:258)
at oracle.jdbc.driver.T4CConnection.connect(T4CConnection.java:1577)
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:353)
... 7 more
GoodBye!!
  

Теперь я не использовал никаких IDE, и это не делается в Windows.Я пытаюсь подключиться через терминал Linux, и вся доступная помощь почти для Windows.
Строка подключения, которую я использую для программы, является:

 String jdbcUrl="jdbc:oracle:thin:@localhost:1521/XE:orcl";
String user="Sourajyoti";
String password="*******";
conn=DriverManager.getConnection(jdbcUrl,user,password);
  

Код, который я использую, выглядит следующим образом:

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

class jdbcdisplay
{
public static void main(String[] args)
{
    Connection conn=null;

    try
    {
        String driver="oracle.jdbc.driver.OracleDriver";
        Class.forName(driver);

        System.out.println("Connecting to database...");
        String jdbcUrl="jdbc:oracle:thin:@localhost:1521/XE:orcl";
        String user="Sourajyoti";
        String password="******";

        conn=DriverManager.getConnection(jdbcUrl,user,password);
        Statement stmt=conn.createStatement();
        String sql="SELECT ENAME,SALARY,HIREDATE FROM EMP";
        ResultSet rs=stmt.executeQuery(sql);

        while (rs.next())
        {
            String name=rs.getString("ENAME");
            double salary=rs.getDouble(2);
            Date date=rs.getDate("HIREDATE");
            System.out.print("Name: " name);
            System.out.print("Salary: " salary);
            System.out.println("Hiredate: " date);
        }

        rs.close();
        stmt.close();
        conn.close();
    }
    catch(SQLException se)
    {
        se.printStackTrace();
    }
    catch(Exception e)
    {
        e.printStackTrace();
    }
    finally
    {
        try
        {
            if (conn!=null)
                conn.close();
        }
        catch(SQLException se)
        {
            se.printStackTrace();
        }
    }
    System.out.println("GoodBye!!");
}
}
  

Комментарии:

1. Какую строку подключения вы используете?

2. Вот так .. я добавил редактирование.

3. Попробуйте удалить /XE . Это должно работать при условии, что SID, к которому вы подключаетесь, является orcl .

4. Не сработало. Вместо этого получил ORA-12505 TNS: слушатель в настоящее время не знает о SID, указанном в дескрипторе подключения .. и другие ошибки

5.Какой у вас SID? Вы следовали инструкциям по настройке базы данных? Похоже, что sid по умолчанию равен xe, поэтому ваша строка подключения будет jdbc:oracle:thin:@localhost:1521:xe docs.oracle.com/cd/E17781_01/admin.112/e18585/toc.htm#XEGSG113

Ответ №1:

Я столкнулся с этой проблемой при использовании REST для подключения и извлечения данных из базы данных Oracle.

 jdbc:oracle:thin:Herong/TopSecret@localhost:1521:XE
jdbc:oracle:thin:Herong/TopSecret@:1521:XE
jdbc:oracle:thin:Herong/TopSecret@//localhost:1521/XE
jdbc:oracle:thin:Herong/TopSecret@//:1521/XE
jdbc:oracle:thin:Herong/TopSecret@//localhost/XE
jdbc:oracle:thin:Herong/TopSecret@///XE
  

Все это допустимые варианты URL-адреса подключения, но в итоге мне пришлось полностью удалить порт.

         "type": "jdbc",
        "name": "test",
        "connection": {
            "driver": "oracle.jdbc.OracleDriver",
            "url": "jdbc:oracle:thin:@//QAORACLE11G.server.local/DatabaseName",
            "user": "QA_DBUSER",
            "password": "QA_DBPASSWORD"
        },
  

Мой справочный материал URL-адрес подключения Oracle JDBC

Комментарии:

1. Хороший справочный материал! Я смешал два варианта синтаксиса, которые вызвали исключение «Недопустимый числовой формат для номера порта». Вы должны выбрать один синтаксический формат: jdbc:oracle:thin:[user/password]@[host][:port]:SID ИЛИ jdbc:oracle:thin:[user/password]@//[host][:port]/SID

Ответ №2:

Хорошо, разница заключалась в моей строке подключения, и я изменил ее на :

 String jdbcUrl="jdbc:oracle:thin:@localhost:1521:xe";
String user="Sourajyoti";
String password="******";