Oracle JDBC соединение через два компьютера Linux - PullRequest
0 голосов
/ 16 марта 2012

Я подключил два своих ноутбука с помощью кроссового кабеля Ethernet Cat5. На обоих установлен Linux Ubuntu.

Lappi 1: $ ifconfig eth0 192.168.1.16 up
Lappi 2: $ ifconfig eth0 192.168.1.17 up

оба подключены через проводное соединение Ethernet

ping lappi 1: $ ping 192.168.1.17
give bytes means working

ping lappi 2: $ ping 192.168.1.16
working

На lappi 1 установлен oracle xe 10g.

Я хочу получить несколько строк, используя lappi-2, из базы данных Oracle в lappi-1.

Вот код

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

public class servertest 
{
    public void test() throws ClassNotFoundException, SQLException
    {
        Class.forName ("oracle.jdbc.driver.OracleDriver");
        Connection conn = DriverManager.getConnection ("jdbc:oracle:thin:@192.168.1.16:1521:XE","scott","tiger");
        Statement stmt = conn.createStatement();
        String query = "select  email_to from createemail";
        ResultSet rset = stmt.executeQuery(query);  

        while(rset.next())
        {
            System.out.println(rset.getString(0));  
        }
    }

    public static void main(String args[]) throws ClassNotFoundException, SQLException
    {
        servertest obj = new servertest();
        obj.test();
    }
}

Это не дает мне никакой ошибки. но он также не получает никаких строк. Иногда я получаю сообщение об ошибке «Не удалось установить соединение» ... (иногда)]

Ответы [ 3 ]

1 голос
/ 16 марта 2012

Я не вижу проблем в коде.Может быть, он не возвращает строки, потому что их нет.И это, вероятно, возвращает ошибку соединения, потому что ссылка действительно не работает (возможно, поврежден кабель ...).

Java имеет очень хорошие сообщения об ошибках, просто внимательно прочитайте сообщение.Если он сообщает, что не может подключиться, будьте уверены на 99%, что это проблема сети.Если строк нет, дважды убедитесь, что вы выбираете правильную таблицу и т. Д.

Пожалуйста, следуйте соглашениям об именах Java: имена классов начинаются с прописных букв.

0 голосов
/ 11 августа 2012

Этот вопрос довольно старый, но, тем не менее, вот он:

Одна проблема, которую я вижу в коде и которая должна вызвать SQLException: когда вы выбираете данные, вы получаете столбец 0 (rset.getString (0)) в столбцах JDBC и индексы полей начинаются с 1, а не с 0!

0 голосов
/ 16 марта 2012

это не дает мне никакой ошибки .. но не возвращает строки.Иногда дать соединение не удалось установить ошибку ... (изредка)]

Иногда?Проверьте подключение к сети и убедитесь, что оно имеет низкую задержку.Также убедитесь, что брандмауэр и порт открыты и правильно настроены для этих двух компьютеров.Логически, когда таблица пуста, ResultSet возвращает пустое значение.Таким образом, вы должны действительно проверить, есть ли в вашей таблице данные.

Вместо того, чтобы выдавать исключения, почему бы не попытаться перехватить все конкретные исключения?Я хочу сказать, что, перехватывая каждое возможное конкретное исключение, вы точно знаете, что не так.Эта стратегия хороша в вашей текущей ситуации.Если это исключение ClassNotFoundException, выведите полезное сообщение.Если это IOException, распечатайте полезное сообщение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...