#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="******";