Druzya.org
Возьмемся за руки, Друзья...
 
 
Наши Друзья

Александр Градский
Мемориальный сайт Дольфи. 
				  Светлой памяти детей,
				  погибших  1 июня 2001 года, 
				  а также всем жертвам теракта возле 
				 Тель-Авивского Дельфинариума посвящается...

 
liveinternet.ru: показано количество просмотров и посетителей

Библиотека :: Компьютеры и Программирование :: Начинаем изучать MySQL
<<-[Весь Текст]
Страница: из 157
 <<-
 
Все методы JDBC могут возбуждать SQLException или один из подклассов этого 
класса, если что-то происходит при обращении к базе данных. Ваш код должен 
уметь перехватывать исключительную ситуацию, обрабатывать ее и освобождать все 
размещенные в памяти ресурсы базы данных. Все перечисленные до сих пор классы 
JDBC имеют метод close(). Однако на практике вы должны обеспечить закрытие 
только тех объектов, которые вызваны процессами, продолжающими оставаться 
открытыми. В приведенных до сих пор примерах практически требовалось закрыть 
только соединение с базой данных. При закрытии соединения автоматически 
закрываются все связанные с ним команды и результирующие наборы. Однако если вы 
намерены сохранить соединение открытым в течение некоторого времени, будет 
правильным поспешить закрыть все объекты statement, которые вы создали с 
использованием этого соединения, когда они вам больше не нужны. В примерах JDBC,
 которые вы видели, это освобождение ресурсов производится в предложении 
finally. Это делается для того, чтобы обеспечить закрытие соединения независимо 
от того, что произойдет.
Динамический доступ к базе данных
До сих пор мы имели дело с приложениями, в которых во время компиляции точно 
известно, что нужно будет делать. Если бы это был единственный тип поддержки, 
обеспечиваемый JDBC, никто не смог бы написать для Mysql и msql интерактивные 
инструменты командной строки, способные во время исполнения принимать команды 
SQL и выполнять их. Класс JDBC Statement поддерживает метод execute() для 
выполнения SQL-команд, которые могут быть запросами или обновлениями. Кроме 
того, экземпляры ResultSet обеспечивают предоставление о себе информации 
времени исполнения через интерфейс с именем ResultSetMetaData, доступ к 
которому осуществляется через вызов метода getMetaData() для ResultSet.
Метаданные
Термин метаданные звучит официозно, но на самом деле это не более чем 
дополнительные данные о некотором объекте, которые, если бы действительно 
хранились в объекте, просто зря тратили бы ресурсы. Например, для простых 
приложений не нужны имена колонок, связанных с результирующим набором 
ResultSet: программисту они, скорее всего, известны во время написания 
программы. Поэтому помеще
ние этих дополнительных данных в класс ResultSet не рассматривается 
разработчиками JDBC как нечто существенное для функциональности ResultSet. 
Однако в некоторых случаях программирования баз данных i такие вещи, как имена 
колонок, очень важны, особенно при осуществлении динамического доступа к базам 
данных. Доступ к этим дополнительным данным - метаданным - разработчики JDBC 
обеспечили через интерфейс ResultSetMetaData. Этот класс позволяет узнать:
* Число колонок в результирующем наборе.
* Является ли NULL допустимым значением в колонке.
* Метку, используемую для заголовка колонки.
* Имя заданной колонки.
* Таблицу, служащую источником данных для данной колонки.
* Тип данных колонки.
Другим примером класса, поставляемым вместе с драйвером mSQL-JDBC, является 
приложение Exec. Оно принимает любую команду SQL, задаваемую в командной строке,
 и выполняет ее. В примере 14-6 приводится соответствующий исходный код.
Пример 14-6. Исходный код приложения Exec для выполнения динамического SQL
import java.sql.*;
public class Exec {
public static void main(String args[]) {
Connection con = null; String sql = "";
for(int i=0; i
		
 
<<-[Весь Текст]
Страница: из 157
 <<-