KnigaRead.com/
KnigaRead.com » Компьютеры и Интернет » Программирование » А Ковязин - Мир InterBase. Архитектура, администрирование и разработка приложений баз данных в InterBase/FireBird/Yaffil

А Ковязин - Мир InterBase. Архитектура, администрирование и разработка приложений баз данных в InterBase/FireBird/Yaffil

На нашем сайте KnigaRead.com Вы можете абсолютно бесплатно читать книгу онлайн А Ковязин, "Мир InterBase. Архитектура, администрирование и разработка приложений баз данных в InterBase/FireBird/Yaffil" бесплатно, без регистрации.
Перейти на страницу:

Бороться с некорректным представлением сообщений InterClient на русском языке можно двумя способами: либо установить в качестве значения для "Язык(Местоположение)" язык "Английский" и получить таким образом окно диагностики на английском языке, либо скачать исправленную версию JDBC-драйвера InterBase interclient.jar с корректной поддержкой русского языка. Его можно скачать с сайта http://people.comita.spb.ru/users/sergeya/Java/interclient.jar или с сайта поддержки этой книги www.InterBase-world.com.

Здесь приводится английский вариант окна диагностики, которое изображено на рисунке 3.5:





Рис 3.5. Окно диагностики соединения через InterClient

Как видно из рисунка, для того, чтобы проверить соединение с базой данных через InterClient, необходимо заполнить поля "InterServer Host", "Database File", а также "User" и "Password". Если вы работаете по локальной сети (или вообще на собственной локальной машине), то поле "Timeout" можно не задавать.

Допустим, у нас есть база данных test.gdb под управлением InterBase на компьютере-сервере server_nt, к которой мы хотим подключиться через InterClient. Если обычная строка соединения к базе выглядит так:

server_nt:С:Databasetest.gdb

то необходимо ввести в поле "InterServerHost" значение "server_nt", а в поле Database File - "C:/Database/test.gdb". Обратите внимание, что в качестве разделителя каталогов используется прямая косая черта. Вообще говоря, InterClient позволяет использовать для разделения каталогов в строке соединения и привычную Windows-пользователям обратную косую черту, однако лучше использовать прямую, чтобы не было необходимости квотировать обратную косую черту в программе на Java.

Нажимаем кнопку Test и видим результаты подсоединения к базе данных. Помните, что программа-транслятор InterServer обязательно должна функционировать на том же компьютере, где работает InterBase. Поэтому "InterServer Host" совпадает с именем сервера, на котором работает InterBase. Допускается, но не рекомендуется указывать в поле "InterServer Host" IP-адрес компьютера- сервера.

Итак, если соединение прошло успешно, то увидите успешное подтверждение соединения в окне диагностики. Пример сведений, выдаваемых в окне диагностики для базы данных на локальном компьютере со строкой соединения localhost:C:Databasetest.gdb, приведен ниже:

InterClient Release: 2.0.1 Test Build,

Client/Server Edition

InterClient compatible JRE versions: 1.3

InterClient compatible IB versions: 5, 6

InterClient driver name:

InterBase.interclient.Driver

InterClient JDBC protocol: jdbc:InterBase:

InterClient JDBC protocol version: 20001

InterClient expiration date: no expiration date

Testing database URL

jdbc:InterBase://localhost/C:/Database/test.gdb.

Connection established to

jdbc:InterBase://localhost/C:/Database/test.gdb

Database product name: InterBase

Database product version: WI-T6.2.773 Firebird 1.0

Database ODS version: 10.0

Database Page Size: 8,192 bytes

Database Page Allocation: 134 pages

Database Size: 1,072 Kbytes

Database SQL Dialect: 3

Middleware JDBC/Net server name: InterServer

Middleware JDBC/Net server version: 2.0.1 Test Build

Middleware JDBC/Net server protocol version: 20001

Middleware JDBC/Net server expiration date: no expiration date

Middleware JDBC/Net server port: 3060

Test connection closed.

***** N0 installation problems detected! *****

Помимо разнообразных сведений, в окне диагностики выводится строка JDBC- соединения, которая была использована для проверки связи с базой данных:

jdbc:InterBase://localhost/C:/Database/test.gdb

Это очень удобный способ формировать синтаксически правильные строки JDBC-соединения. Давайте сохраним эту строку для будущего использования в нашей программе.

Пример приложения на Java

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

Хотя в данном примере показывается работа с InterBase, можно заметить, что он похож на примеры работы с другими серверами СУБД. Это связано с тем, что Java, а точнее, JDBC предоставляет универсальный способ общения своих приложений и любых СУБД, для которых есть JDBC-драйвера. InterBase не является исключением, и любой Java-разработчик сможет легко разобраться в использовании JDBC-драйвера InterBase, если он ранее уже работал с JDBC.

Итак, вот пример программы, которая находится в файле SampleInterBase2JAVA.Java:

import Java.sql.*;

public class SampleInterBase2JAVA {

public static void main(String[] args){

// срока соединения с базой данных InterBase String url =

"jdbc:InterBase://localhost/C:/Database/test.gdb"; try {

// загружаем драйвер для InterBase

Class.forName("InterBase.interclient.Driver");

} catch(Java.lang.ClassNotFoundException e) {

// в случае, если драйвер не найден,

// выдаем сообщение об ошибке

System.err.printlnfe.getMessage()) ;

}

Connection conn = null; // соединение с базой данных

try {

// создаем соединение с базой данных (объект conn)

// указанной в строке соединения url

// используем пользователя/пароль:

SYSDBA/masterkey

conn = DriverManager.getConnection(url,"SYSDBA", "masterkey");

} catch(Java.sql.SQLException sqle){

// в случае проблем с подключением

// выдаем соответствующее сообщение об ошибке

System.err.println(sqle.getMessage()) ;

}

//после создания соединения

// создаем объект выражение stint

Statement stmt = null;

try{

stmt = conn.createStatement();

}catch(Java.sql.SQLException EsqlConn){

System.err.printlntEsqlConn.getMessage());

}

// текст SQL-запроса

String sSQL = "Select ID, NAME FROM TableExample";

ResultSet rs = null;

try{

// выполняем запрос и помещаем результат

//в объект ResultSet rs

rs = stmt.executeQuery(sSQL);

}catch( Java, sql. SQL/Exception EsqlConn) {

System.err.printIn(EsqlConn.getMessage());

}

// распечатываем результат на экране

try{

while (rs.next()) {

int id = rs.getlntC'ID");

String s = rs.getStringt"NAME");

System.out.println(id + " " + s) ;

}

}catch(Java.sql.SQLException EsqlFetch){

System.err.println(EsqlFetch.getMessage());

}

}

}

Теперь можно попытаться откомпилировать и запустить эту тестовую программу следующим образом:

Java.exe SampleInterBase2JAVA

Если все установлено правильно и существует такая база, то вы получите два столбца с результатами. Однако есть одна особенность, которую необходимо знать для работы из Java с базами данными, содержащими кириллицу.

Если вы следовали рекомендациям, приведенным в главе "Русификация InterBase" (ч. 1), то ваша тестовая база, в которой предполагается хранить русские символы, создана с использованием набора символа (charser) WIN1251.

Если попытаться получить из базы данных строки, содержащие русские символы описанным в приведенном выше примере способом, то в результате выборки будут находиться символы с некорректной кодировкой, которые прочитать будет невозможно. Чтобы заставить JDBC-драйвер InterBase использовать правильный набор символов для работы с кириллицей, необходимо указать его в параметрах соединения. Для этого следует создать объект Properties и поместить в него параметры соединения. За набор символов, который будет использоваться для соединения с базой данных, отвечает параметр charset. Вот пример соединения:

// задаем параметры соединения строку соединения,

// имя пользователя, пароль и набор символов

String url = "jdbc:InterBase://localhost/C:/Database/test.gdb";

String uName = "SYSDBA";

String pass = "masterkey";

String charSet="cp!251";

// создаем структуру для хранения параметров соединения

Properties prop = new Properties();

prop.put("user", uName);

prop.put("password", pass);

prop.put{"charset", charSet);

// получаем соединение с базой данных InterBase

// с указанием используемого набора символов

Connection db = DriverManager.getConnection(url, prop);

Таким образом разрешается проблема в приложениях Java с работой с кириллическими символами в базах данных InterBase.

Заключение

В этой главе описан JDBC-драйвер для InterBase и его клонов - InterClient и приведен небольшой пример приложения на Java, подключающегося к базе данных InterBase и выполняющего простейший запрос. Основная идея этой главы в том, чтобы показать, насколько легко связать InterBase и Java.









































Администрирование и архитектура InterBase

Установка InterBase - взгляд изнутри

InterBase как встраиваемая СУБД

Материал этой главы будет посвящен углубленному рассмотрению процесса установки Intel Base и его клонов на ОС Windows. В этой главе мы попытаемся понять, что значит определение "встроенная" (embedded) СУБД, которое так часто используют по отношению к InterBase.

Почему изложение материала этой главы ориентировано на ОС Windows? Что бы ни говорили поклонники Linux, но наиболее значительный процент серверных инсталляций InterBase осуществляется именно под Windows, а что касается количества клиентских установок, то ОС Windows здесь вообще вне конкуренции. Поэтому мы рассмотрим вопросы встраивания InterBase именно в Windows-приложения

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

Перейти на страницу:
Прокомментировать
Подтвердите что вы не робот:*