|
#endif }
// При вызове этого метода нужно быть готовым
// к тому, что может быть возвращен
NULL, char *Row::GetField(int field)
{
if( IsClosed() )
{
throw "Строка освобождена.";
}
if( field < 1 || field > GetFieldCount() .)
{ throw "Индех лежит вне допустимых значений.";}
return fields[field-1]; }
int Row::IsClosed() {
return (fields == (T_ROW)NULL); }
Пример приложения, использующего эти классы C++, прилагается к книге.
Глава №14.
Java u JDBC
В главе 13 «Си C++», мы познакомили вас с С API для MySQL и mSQL. К несчастью,
каждый API позволяет писать программы только для той базы данных, которую он
поддерживает. Если вы собираетесь переносить приложение между MySQL и mSQL или,
того хуже, хотите, чтобы оно работало на Oracle, Sybase или с любой другой СУБД,
вам необходимо переписать свой код так, чтобы он использовал фирменный API
этого ядра. Однако Java-программисты по большей части избавлены от проблем
переносимости на другую базу данных. У них есть единый API, Java DataBase
Connectivity API (JDBC), обеспечивающий их унифицированным интерфейсом ко всем
SQL-базам данных.
Поскольку JDBC является единым интерфейсом ко всем базам данных, достаточно
изучить его, чтобы писать приложения, которые будут работать как с MySQL, так и
с mSQL. На самом деле, если должным образом использовать JDBC, то написанные
вами на Java приложения смогут работать с любой СУБД. Если у вас есть доступ к
другим базам данных, кроме MySQL и mSQL, можете проверить верность этого
утверждения, запустив примеры данной главы с другой базой данных.
Для чтения этой главы предполагается знание основ языка программирования Java и
лежащих в его основе концепций. Если такой подготовки у вас нет, настоятельно
рекомендуем посмотреть «Exploring Java» (O'Reilly & Associates, Inc.). Узнать
более подробно о том, как создавать многоуровневые приложения баз данных, о чем
мы рассказывали в главе 8 «Архитектуры приложений баз данных», можно из книги
«Database Programming with JDBC and Java» (O'Reilly & Associates, Inc.).
Что такое JDBC?
Как и все Java API, JDBC является набором классов и интерфейсов, в совокупности
поддерживающих определенный набор функций. В случае JDBC эти функции
обеспечивают доступ к базе данных. Классы и интерфейсы, составляющие JDBC API,
являются, таким образом, абстракциями понятий, общих при доступе к базам данных
любого типа. Например, Connection является интерфейсом Java, представляющим
соединение с базой данных. Аналогично ResultSet представляет результирующий
набор данных, возвращаемый командой SQL SELECT. Классы, образующие JDBC API,
находятся в пакете Java, sql, который был введен Sun в JDK 1.1.
Естественно, что конкретные детали доступа к базе данных зависят от ее
изготовителя. JDBC фактически не имеет дела с этими деталями. Большая часть
классов в пакете Java.sql является интерфейсами без реализации. Реализация этих
интерфейсов осуществляется производителем базы данных в виде драйвера JDBC. В
качестве программиста баз данных вам нужно знать очень немногое относительно
драйвера, который вы используете, — все остальное делается через интерфейсы
JDBC. Специфическая информация о базе данных, которая необходима для
использования JDBC, включает в себя:
* URL для драйвера JDBC.
* Имя класса, реализующего Java. sql. Driver.
В новую спецификацию JDBC 2.0 включено необязательное для реализации
производителями баз данных стандартное расширение API. Если поставщик вашей
базы данных JDBC реализовал это стандартное расширение, вам даже нет
необходимости знать JDBC URL или реализацию класса Driver. Это расширение
предусматривает наличие класса DataSource, который можно найти по имени в
каталоге с поддержкой JNDI.
Оба эти элемента можно получить во время выполнения - из командной строки или
файла свойств. Сам код программы не ссылается на эти два зависящие от
реализации элемента. Мы разъясним, что делают JDBC URL и класс Driver в тех
параграфах, где будем рассказывать о соединении с базами данных. На рисунке
14-1 представлена схема интерфейсов JDBC.
JNDI - Java Naming and Directory Interface (интерфейс имен и каталогов Java)
API. Он позволяет запоминать объекты Java в службе имен и каталогов, такой как
сервер Lightweight Directory Access Protocol (облегченный протокол доступа к
каталогам - LDAP), и находить их по имени.
Рис. 14-1. Классы и интерфейсы, входящие в JDBC API
Соединение с базой данных
Прежде всего нужно соединиться с базой данных. Один из немногих реализованных в
пакете Java. sql. package классов - это класс DriverManager. Он поддерживает
список реализаций JDBC и обеспечивает создание соединений с базами данных на
основе сообщаемых ему JDBC URL. URL для JDBC имеет вид
jdbc:protocol:subprotocol. Он сообщает DriverManager, с какой СУБД нужно
|
|