| div.main {margin-left: 20pt; margin-right: 20pt}      Доступ к базам данных из Java-программ и проблемы русификации
      С. Б. Дунаев
      Введение Разумеется, что организовать доступ к базам данных из современного 
      языка программирования в наше время не представляет никакой сложности. 
      Более того, и сами языки программирования более всего оцениваются 
      разработчиками по типу и возможностям заложенных в них средств доступа к 
      базам данных, удобству и полноте интерфейсов. В этом смысле Java не 
      представляет исключения. Уже в версии JDK1.1 появился пакет классов 
      java.sql, обеспечивающий больщинство функций, известных к тому времени 
      разработчикам ODBC-приложений. В этом пакете содержится ряд замечательных 
      классов, например: java.sql.CallableStatement, который обеспечивает 
      выполнение на Java хранимых процедур; java.sql.DatabaseMetaData, который 
      исследует базу данных на предмет ее реляционной полноты и целостности с 
      получением самых разнообразных данных о типах и содержимом таблиц, 
      колонок, индексов, ключей и т.д.; наконец, - java.sql.ResultSetMetaData, с 
      помощью которого можно выводить в удобном виде всю необходимую информацию 
      из таблиц базы данных или печатать сами метаданные в виде названий таблиц 
      и колонок.  Однако, коренное отличие Java от других традиционных языков 
      программирования заключается в том, что одни и те же функции доступа к 
      базам данных, с помощью универсальности и кроссплатформенности Java, можно 
      организовать чрезвычайно гибко, используя все преимущества современных 
      объектно-ориентированных технологий, WWW и Intranet/Internet. Рассмотрим 
      по порядку все варианты использования Java-программ при взаимодействии с 
      базами данных.1. Java-программы и апплеты с интерфейсом JDBC-ODBC JDBC (Java Database Connectivity) является не протоколом, а интерфейсом 
      и основан на спецификациях SAG CLI (SQL Access Group Call Level Interface 
      - интерфейс уровня вызова группы доступа SQL). Сам по себе JDBC работать не может и использует основные абстракции и 
      методы ODBC. Хотя в стандарте JDBC API и предусмотрена возможность работы 
      не только через ODBC, а и через использование прямых линков к базам данных 
      по двух- или трех-звенной схеме (см. Рис.1), эту схему используют гораздо 
      реже, чем повсеместно используемый JDBC-ODBC-Bridge занимающий центральное 
      место в общей схеме взаимодействия интерфейсов (см. Рис. 2) Рис. 
      1. Непосредственный доступ к базе данных по 3-х-звенной схеме.
 
 Рис. 2. Схема взаимодействия интерфейсов.
 Даже беглого взгляда на Рис. 2 вполне достаточно, чтобы понять - общая 
      схема взаимодействия интерфейсов в Java удивительным образом напоминает 
      столь всем знакомую схему ODBC с ее гениальным изобретением 
      драйвер-менеджера к различным СУБД и единого универсального 
      пользовательского интерфейса. JDBC Driver Manager - это основной ствол 
      JDBC-архитектуры. Его первичные функции очень просты - соединить 
      Java-программу и соответствующий JDBC драйвер и затем выйти из игры. 
      Естественно, что ODBC был взят в качестве основы JDBC из-за его 
      популярности среди независимых поставщиков программного обеспечения и 
      пользователей. Но тогда возникает законный вопрос - а зачем вообще нужен 
      JDBC и не легче ли было организовать интерфейсный доступ к ODBC-драйверам 
      непосредственно из Java? Ответом на этот вопрос может быть только 
      однозначное нет. Путь через JDBC-ODBC-Bridge, как ни странно, может 
      оказаться гораздо короче.  1. ODBC нельзя использовать непосредственно из Java, поскольку он 
      основан на C-интерфейсе. Вызов из Java C-кода нарушает целостную концепцию 
      Java, пробивает брешь в защите и делает программу трудно-переносимой. 2. Перенос ODBC C-API в Java-API нежелателен. К примеру, Java не имеет 
      указателей, в то время как в ODBC они используются. 3. ODBC слишком сложен для понимания. В нем смешаны простые и сложные 
      вещи, причем сложные опции иногда применяются для самых простых 
      запросов. 4. Java-API необходим, чтобы добиться абсолютно чистых Java решений. 
      Когда ODBC используется, то ODBC-драйвер и ODBC менеджер должны быть 
      инсталлированы на каждой клиентской машине. В то же время, JDBC драйвер 
      написан полностью на Java и может быть легко переносим на любые платформы 
      от сетевых компьютеров до мэйнфреймов.  JDBC API - это естественный Java-интерфейс к базовым SQL абстракциям и, 
      восприняв дух и основные абстракции концепции ODBC, он реализован, 
      все-таки, как настоящий Java-интерфейс, согласующийся с остальными частями 
      системы Java. В отличие от интерфейса ODBC, JDBC организован намного проще. Главной 
      его частью является драйвер, поставляемый фирмой JavaSoft для доступа из 
      JDBC к источникам данных. Этот драйвер является самым верхним в иерархии 
      классов JDBC и называется DriverManager. Согласно, установившимся правилам 
      Internet, база данных и средства ее обслуживания идентифируются при помощи 
      URL.jdbc:: где под понимается имя конкретного драйвера, или некоего 
      механизма установления соединения с базой данных, например, ODBC. В случае 
      применения ODBC, в URL-строку подставляется именно эта аббревиатура, а в 
      качестве используется обычный DSN (Data Source Name), т.е. имя 
      ODBC-источника из ODBC.INI файла. Например:jdbc:odbc:dBase В некоторых случаях вместо ODBC может быть использовано имя прямого 
      сетевого сервиса к базе данных, 
      например:jdbc:dcenaming:accounts-payable, или
 jdbc:dbnet://ultra1:1789/state
 В последнем случае часть URL //ultra1:1789/state представляет собой 
      и описывает имя хоста, порт и соответствующий идентификатор для 
      доступа к соответствующей базе данных.  
 
 
 |