java.sql.SQLException Сетевой адаптер не смог установить соединение [duplicate]

Это означает, что указанная переменная не указана ни на что. Я мог бы сгенерировать это так:

SqlConnection connection = null;
connection.Open();

Это вызовет ошибку, потому что, пока я объявил переменную «connection», она не указала ни на что. Когда я пытаюсь вызвать член «Open», для его устранения нет ссылки, и он будет вызывать ошибку.

Чтобы избежать этой ошибки:

  1. Всегда инициализируйте свои объекты, прежде чем пытаться что-либо с ними делать.
  2. Если вы не уверены, что объект имеет значение null, проверьте его с помощью object == null.

Инструмент Resharper JetBrains определит каждое место в вашем коде, которое имеет возможность ошибки нулевой ссылки, позволяя вам ввести нулевую проверку. Эта ошибка является источником ошибок номер один, IMHO.

199
задан Jim Tough 28 January 2011 в 20:05
поделиться

7 ответов

http://download.oracle.com/docs/cd/B28359_01/java.111/b31224/urls.htm#BEIDHCBA

Синтаксис названия службы в тонком стиле

Названия служб тонкого стиля поддерживаются только драйвером JDBC Thin. Синтаксис:

@ // host_name: port_number / service_name

Например:

jdbc: oracle: thin: scott / tiger @ // myhost: 1521 / myservicename

Поэтому я бы попытался:

jdbc: oracle: thin: @ // oracle.hostserver2.mydomain.ca:1522/ABCD

Кроме того, в ответе Роберта Большого дома вы также можете указать имя TNS в URL-адрес JDBC, как показано ниже:

jdbc:oracle:thin:@(DESCRIPTION =(ADDRESS_LIST =(ADDRESS =(PROTOCOL=TCP)(HOST=blah.example.com)(PORT=1521)))(CONNECT_DATA=(SID=BLAHSID)(GLOBAL_NAME=BLAHSID.WORLD)(SERVER=DEDICATED)))
351
ответ дан Alister Lee 27 August 2018 в 16:59
поделиться

Итак, есть два простых способа сделать эту работу. Решение, размещенное Bert F, отлично работает, если вам не нужно предоставлять какие-либо другие специальные свойства соединения с Oracle. Формат для этого:

jdbc:oracle:thin:@//HOSTNAME:PORT/SERVICENAME

Однако, если вам нужно указать другие свойства соединения с Oracle, вам нужно использовать длинный стиль TNSNAMES. Я должен был сделать это недавно, чтобы включить общие соединения Oracle (где сервер делает свой собственный пул соединений). Формат TNS:

jdbc:oracle:thin:@(description=(address=(host=HOSTNAME)(protocol=tcp)(port=PORT))(connect_data=(service_name=SERVICENAME)(server=SHARED)))

Если вы знакомы с форматом файлов Oracle TNSNAMES, это должно выглядеть вам знакомым. Если нет, то просто Google это для деталей.

79
ответ дан Adrien Brunelat 27 August 2018 в 16:59
поделиться

Попробуйте следующее: jdbc:oracle:thin:@oracle.hostserver2.mydomain.ca:1522/ABCD

Изменить: за комментарий ниже это действительно правильно: jdbc:oracle:thin:@//oracle.hostserver2.mydomain.ca:1522/ABCD (обратите внимание на //)

Вот ссылка к полезной статье

11
ответ дан Ahmed Ashour 27 August 2018 в 16:59
поделиться

При использовании dag вместо thin синтаксис, указывающий на имя службы, работал для меня. Вышеупомянутые решения jdbc:thin не работали.

jdbc:dag:oracle://HOSTNAME:1521;ServiceName=SERVICE_NAME
0
ответ дан AJD 27 August 2018 в 16:59
поделиться

Если вы используете eclipse для подключения oracle без SID. Есть два драйвера для выбора, т. Е. Драйвер Oracle thin, а другой - другой драйвер. Выберите другие драйверы и введите имя службы в столбце базы данных. Теперь вы можете напрямую подключиться, используя имя службы без SID.

1
ответ дан Bhagavathy Vinoth 27 August 2018 в 16:59
поделиться

Вы также можете указать имя TNS в URL-адресе JDBC, как показано ниже

jdbc:oracle:thin:@(DESCRIPTION =(ADDRESS_LIST =(ADDRESS =(PROTOCOL=TCP)(HOST=blah.example.com)(PORT=1521)))(CONNECT_DATA=(SID=BLAHSID)(GLOBAL_NAME=BLAHSID.WORLD)(SERVER=DEDICATED)))
21
ответ дан Chacko Mathew 27 August 2018 в 16:59
поделиться

Это обсуждение помогло мне решить проблему, с которой я боролся в течение нескольких дней. Я огляделся по всему Интернету, пока не нашел ответ от Джима Тхафа 18 мая в 15:17. С этим ответом мне удалось подключиться. Теперь я хочу вернуть и помочь другим с полным примером. Здесь:

import java.sql.*; 

public class MyDBConnect {

    public static void main(String[] args) throws SQLException {

        try { 
            String dbURL = "jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=whatEverYourHostNameIs)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=yourServiceName)))";
            String strUserID = "yourUserId";
            String strPassword = "yourPassword";
            Connection myConnection=DriverManager.getConnection(dbURL,strUserID,strPassword);

            Statement sqlStatement = myConnection.createStatement();
            String readRecordSQL = "select * from sa_work_order where WORK_ORDER_NO = '1503090' ";  
            ResultSet myResultSet = sqlStatement.executeQuery(readRecordSQL);
            while (myResultSet.next()) {
                System.out.println("Record values: " + myResultSet.getString("WORK_ORDER_NO"));
            }
            myResultSet.close();
            myConnection.close();

        } catch (Exception e) {
            System.out.println(e);
        }       
    }
}
6
ответ дан Community 27 August 2018 в 16:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: