java.sql.Connection

Интерфейс java.sql.Connection определяет характеристики (включая выбор кодировки) и состояние соединения с СУБД; кроме того, он предоставляет средства для контроля транзакций и уровня их изолированности. Интерфейс предназначен для подачи запросов к БД и получения результатов их обработки.

Возможности класса:

  • методы commit, rollback и setAutoCommit управляют транзакциями;

  • объекты CallableStatement, создаваемые методом prepareCall, – хранимыми процедурами;

  • объекты PreparedStatement (метод prepareStatement) – претранслированными запросами;

  • объекты Statement – обычными запросами.

Для получения информации о БД интерфейс Connection использует метод getMetaData, который возвращает объект DatabaseMetaData. Он предоставляет информацию с описанием таблиц БД, поддерживаемой СУБД грамматики SQL-операторов, ее хранимых процедур, возможностей соединения и т. д.

В клиентском приложении выполняется автоматическое определение кодировки канала сервера:

  • на основании свойства encoding соединения (если оно задано);

  • на основании свойства file.encoding, отражающего кодировку клиента по умолчанию (если свойство encoding соединения не задано).

Для соединения с конкретной БД необходимо указать строку соединения (URL), которая имеет вид (для JDBC-драйвера версии 3.0 и выше):

jdbc:linter:linapid:[< host >]:[< port >]:[< node >]
[;< параметр настройки >…]

где:

< host > – IP-адрес удаленного узла; если он не задан, используется локальный узел;

< port > – номер порта (1070, если не указан), на котором работает серверная часть JDBC-драйвера;

< node > – имя сервера из < LINTER_TOP_DIR >\bin\nodetab на удалённом узле, где < LINTER_TOP_DIR > – спецификация пути к установочному каталогу СУБД ЛИНТЕР;

< параметр настройки > – задает параметр настройки соединения.

Возможные значения параметра настройки соединения:

  1. rollbackOnClose=true | false – устанавливает режим закрытия соединения:

    • если выставлен режим autocommit и rollbackOnClose=false, то при вызове метода close() измененные данные сохранятся в БД;

    • если выставлен режим autocommit и rollbackOnClose=true, то при вызове метода close() изменения в БД не сохраняются.

      Значение по умолчанию true.

      Пример url:

      jdbc:linter:linapid:localhost:1070:DEMO;rollbackOnClose=false
  2. emptyBlobAsNull=true | false – устанавливает правило интерпретации пустого BLOB-значения для методов интерфейса java.sql.ResultSet getBinaryStream(), getCharacterStream(), getAsciiStream():

    • true – возвращать для пустых BLOB-данных null-значение;

    • false – возвращать объекты InputStream, Reader и InputStream соответственно.

      Значение по умолчанию true.

      Пример url:

       jdbc:linter:linapid:localhost:1070:DEMO;emptyBlobAsNull=false
  3. autoCommit=true | false – устанавливает (true)/отменяет (false) режим autoCommit, т. е. включает режим Pessimistic.

    Значение по умолчанию true.

    Пример url:

    jdbc:linter:linapid:localhost:1070:DEMO;autoCommit=false
  4. timeout=< значение > – задает максимальное время ожидания (в миллисекундах) клиентским приложением данных с ЛИНТЕР-сервера. Если < значение > равно 0, предполагается бесконечное ожидание.

    Значение по умолчанию 0.

    Пример url:

    jdbc:linter:linapid:localhost:1070:DEMO;timeout=1000
  5. ignoreTargetSqlType=true | false – не учитывать (true)/учитывать (false) параметр SQLType, передаваемый в функции setNull и setObject:

    • если настройка установлена в значение true, драйвер учитывает переданный SQLType согласно спецификации (о соответствии см. подробнее в JDBC Specification, Table B-5);

    • если настройка установлена в значение false, драйвер игнорирует переданный тип.

    Значение по умолчанию: false.

  6. LOBCreateOnCopy=true | false – использовать копию LOB-данных (true)/использовать оригинальные LOB-данные (false).

    Настройка актуальна при множественном использовании одного и того же LOB-значения. Например, значение одного и того же LOB-поля выборки данных можно присвоить нескольким переменным, при этом изменение значения любой из этих переменных либо не будет влиять на значение остальных переменных (true), либо влечет изменение значения и во всех остальных переменных (false).

    Значение по умолчанию false.

    Пример url:

    jdbc:linter:linapid:localhost:1070:DEMO;LOBCreateOnCopy=true
  7. encoding=< значение > – задаёт кодировку соединения с ЛИНТЕР-сервером.

    Примеры значений:

    • cp866;

    • cp1251;

    • koi8-r.

    Пример url:

    jdbc:linter:linapid:localhost:1070:DEMO;encoding=cp1251

При создании соединения в случае ошибки в имени/значении параметров будут создаваться предупреждения SQLWarning, доступные путем вызова метода conn.getWarnings().

Пример подсоединения к БД с помощью JDBC-драйвера приведен в приложении 2.

Примечание

Параметры строки соединения – позиционные, поэтому вместо пропускаемых параметров надо ставить двоеточие.

Пример

Properties info = new Properties();
info.put("user", "...");
info.put("password", "...");
info.put("encoding", "cp1251");
driver.connect(url, info);

Примечание

Если на клиенте свойство не указано, то для конвертации строк будут использоваться настройки Java-приложения.

Пример

import java.sql.*;
import com.relx.jdbc.LinterDriver;

public class Connect
{
  public static void main (String[] args)
  {
    try
    {
      Driver d = (Driver)Class.forName("com.relx.jdbc.LinterDriver").newInstance();
      String address = "jdbc:linter:linapid:localhost:1070:local;autoCommit=false";

      String user    = "SYSTEM";
      String password= "MANAGER8";

      System.out.println("Driver found. Now connecting to database ... ");

      Connection con = DriverManager.getConnection(address,user,password);

      System.out.println(" Connection established ... ");

      /*......*/
      con.close();
    }
    catch (Exception e)
    {
      System.out.println("Catched :"+e+" mess= "+e.getMessage() );
      e.printStackTrace();
    }
  }
}