powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Ошибка JDBC: Got minus one from a read call
7 сообщений из 7, страница 1 из 1
Ошибка JDBC: Got minus one from a read call
    #38752727
KItevs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день. Я пытаюсь подключиться к базе oracle(Oracle 11g) через JDBC.
Логин базы - system, пароль - admin.
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
final private static String driverName = "oracle.jdbc.driver.OracleDriver";
    private static String url;
    final private static String server = "127.0.0.1";
    final private static String port = "8080";
    final private static String sid = "apex";
    final private static String username = "FILMS";// имя workspace и username
    final private static String password = "admin";//workspace  пароль
    private static Connection connection;
    private static boolean isConnected = false;
    private static boolean connect() {
    try {
        url = "jdbc:oracle:thin:@" + server + ":" + port + ":" + sid;
        System.out.println(url);
        Class.forName(driverName);
        connection = DriverManager.getConnection(url, username, password);
        System.out.println("connecting: " + url);
        if(connection.equals(null))
            isConnected = false;
        else
            isConnected = true;
    } catch (ClassNotFoundException e) {
        System.out.println("ClassNotFoundException");
        isConnected = false;
    } catch (SQLException e) {
        System.out.println("SQLException\n" + e.getMessage());
        System.out.println("ErrorCode: "  +   e.getErrorCode());
        System.out.println("StackTrace: " + e.getStackTrace());
        isConnected = false;
    }


В результате выводит:
jdbc:oracle:thin:@127.0.0.1:8080:apex
SQLException
Ошибка ввода/вывода: Got minus one from a read call
ErrorCode: 17002
StackTrace: [Ljava.lang.StackTraceElement;@6d9c638
not connected
Подскажите, в чем проблема.
...
Рейтинг: 0 / 0
Ошибка JDBC: Got minus one from a read call
    #38752820
irbis_al
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KItevs,

Ну проблема хотя бы в том ,что оракле ,как правило , сидит на порту 1521 а не 8080(на котором ,как правило,сидит web-http apex listener)
и sid у oracle ,как правило, не apex
...
Рейтинг: 0 / 0
Ошибка JDBC: Got minus one from a read call
    #38752862
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Но ошибка конечно замечательная. Руки поотрывать кодерам JDBC thin драйвера, должно было быть стандартное TNS No listener. IMHO
...
Рейтинг: 0 / 0
Ошибка JDBC: Got minus one from a read call
    #38752876
irbis_al
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid KudryavtsevНо ошибка конечно замечательная. Руки поотрывать кодерам JDBC thin драйвера, должно было быть стандартное TNS No listener. IMHO

NO listener это если нет на порту никого.
А у него на порту web-apex-listener...И они пытаются договорится JDBC по оракловому протоколу,а apex по http :-)
...
Рейтинг: 0 / 0
Ошибка JDBC: Got minus one from a read call
    #38752943
KItevs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
irbis_al, Спасибо за то, что пытались помочь, но я ничего не понял. С JDBC я впервые работаю, поэтому в этом я профан. Я уже использовал порт 1521 и sid XE.
Возможно, я не так проблему описал. Может так подскажите.
Создана база в Application Express (oracle database xe 11.2). По ссылке http://127.0.0.1:8080/apex/f?p=4950, я ее запускал и работал с ней.
Логин для входа в базу : system, пароль : admin;
Потом в аккаунт вхожу/Enter Application Express workspace and credentials.
workspace: FILMS
username: FILMS
password: admin

В итоге обращался к jdbc:oracle:thin:@localhost:1521:XE

ORA-00604: error occurred at recursive SQL level 1
ORA-12705: Cannot access NLS data files or invalid environment specified

Подскажете пожалуйста, если знаете в чем чем проблема.
...
Рейтинг: 0 / 0
Ошибка JDBC: Got minus one from a read call
    #38752946
irbis_al
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Во всяком случае вы на правильном пути...Вы уже соединились с oracle,но надо решить проблему с NLS кодировкой.(В XE с этим лажа)...Поищите по форуму(это обсуждалось) или в гугле
...
Рейтинг: 0 / 0
Ошибка JDBC: Got minus one from a read call
    #38752952
KItevs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
irbis_al, Спасибо Вам большое. Вы правы: проблема с NLS кодировкой. Добавил Locale.setDefault(Locale.ENGLISH); перед открытием соединения.
Может понадобится кому.
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
import java.sql.*;
import java.util.Locale;
public class JDBCExample {
    final private static String driverName = "oracle.jdbc.driver.OracleDriver";
    private static String url;
    final private static String server = "localhost";
    final private static String port = "1521";
    final private static String sid = "XE";
    final private static String username = "system";
    final private static String password = "admin";
    private static Connection connection;
    private static boolean isConnected = false;
    private static boolean connect() {
    try {
        url = "jdbc:oracle:thin:@" + server + ":" + port + ":" + sid;
        System.out.println(url);
        Class.forName(driverName);
        Locale.setDefault(Locale.ENGLISH);
        connection = DriverManager.getConnection(url, username, password);
        System.out.println("connecting: " + url);
        if(connection.equals(null))
            isConnected = false;
        else
            isConnected = true;
    } catch (ClassNotFoundException e) {
        System.out.println("ClassNotFoundException");
        isConnected = false;
    } catch (SQLException e) {
        System.out.println("SQLException\n" + e.getMessage());
        isConnected = false;
    }
    return isConnected;
    }
    public static void main(String[] args) {
        if (connect()) System.out.println("connected");
         else System.out.println("not connected");
    }
}
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Ошибка JDBC: Got minus one from a read call
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]