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 > – спецификация пути к установочному каталогу СУБД ЛИНТЕР;
< параметр настройки >
– задает параметр настройки соединения.
Возможные значения параметра настройки соединения:
-
rollbackOnClose=true | false – устанавливает режим закрытия соединения:
-
если выставлен режим autocommit и rollbackOnClose=false, то при вызове метода close() измененные данные сохранятся в БД;
-
если выставлен режим autocommit и rollbackOnClose=true, то при вызове метода close() изменения в БД не сохраняются.
Значение по умолчанию true.
Пример url:
jdbc:linter:linapid:localhost:1070:DEMO;rollbackOnClose=false
-
-
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
-
-
autoCommit=true | false – устанавливает (true)/отменяет (false) режим autoCommit, т. е. включает режим Pessimistic.
Значение по умолчанию true.
Пример url:
jdbc:linter:linapid:localhost:1070:DEMO;autoCommit=false
-
timeout=< значение > – задает максимальное время ожидания (в миллисекундах) клиентским приложением данных с ЛИНТЕР-сервера. Если < значение > равно 0, предполагается бесконечное ожидание.
Значение по умолчанию 0.
Пример url:
jdbc:linter:linapid:localhost:1070:DEMO;timeout=1000
-
ignoreTargetSqlType=true | false – не учитывать (true)/учитывать (false) параметр SQLType, передаваемый в функции setNull и setObject:
-
если настройка установлена в значение true, драйвер учитывает переданный SQLType согласно спецификации (о соответствии см. подробнее в JDBC Specification, Table B-5);
-
если настройка установлена в значение false, драйвер игнорирует переданный тип.
Значение по умолчанию: false.
-
-
LOBCreateOnCopy=true | false – использовать копию LOB-данных (true)/использовать оригинальные LOB-данные (false).
Настройка актуальна при множественном использовании одного и того же LOB-значения. Например, значение одного и того же LOB-поля выборки данных можно присвоить нескольким переменным, при этом изменение значения любой из этих переменных либо не будет влиять на значение остальных переменных (true), либо влечет изменение значения и во всех остальных переменных (false).
Значение по умолчанию false.
Пример url:
jdbc:linter:linapid:localhost:1070:DEMO;LOBCreateOnCopy=true
-
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(); } } }