Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Metodichka_Po_Tp.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.44 Mб
Скачать

1.6 Применение интерфейса ResultSetMetaData

Интерфейс java.sql.ResultSetMetaData используется для получения сведений о результирующем наборе и его столбцах во время выполнения. Этот интерфейс может стать эффективным инструментальным средством при разработке многократно используемых компонентов отображения, когда характер результирующего набора не известен на этапе проектирования. Интерфейс ResultSetMetaData может быть получен из любой допустимой ссылки на интерфейс ResultSet:

java.sql.ResultSetMetadata rsetInfo=rset.getMetadata(); // получение информации о результате запроса

Интерфейс ResultSetMetaData предоставляет методы определения числа и имен столбцов, типов данных, ширины элементов отображения и т.п. Следующий фрагмент кода можно использовать для сбора информации о заголовках и размерах столбцов, что способствует отображению результатов запроса в виде координатной сетки:

int numCols=rsetInfo.getColumnCount(); // количество столбцов результата запроса

String colNames[]=new String[numCols];

int colSizes[]=new int[numCols];

int colTypes[]=new int[numCols];

for(int i=0; i<numCols; i++) // цикл по столбцам результата запроса

{

// получение информации о столбцах результата запроса

colNames[i]=rsetInfo.getColumnLabel(i+1); // индексы столбцов в JDBC начинаются с 1

colSizes[i]=rsetInfo.getColumnDisplaySize(i+1);

colTypes[i]=rsetInfo.getColumnType(i+1);

}

Метод getColumnType() возвращает целое значение, представляющее собой тип данных SQL. Константы типа данных SQL определены в классе java.sql.Types. В контексте приведенного выше примера этой информацией можно воспользоваться для определения способа отображения столбца с выравниванием по левому или по правому краю. Следующий фрагмент кода служит расширением приведенного выше примера для выборки значений столбцов в каждой строке:

int numCols=rsetInfo.getColumnCount();

String colValues[]=new String[numCols];

int i=0;

while(rset.next()); // цикл по строкам результата запроса

{

for(int i=0; i<numCols; i++) // цикл по столбцам результата запроса

{

colValues[i]=rset.getString(rsetInfo.getColumnLabel(i+1)); // получение значения столбца результата запроса

// выполнить что-либо по использованию полученного значения этого столбца

. . . . . . . . . . .

}

}

В приведенном выше фрагменте кода метод getString() используется для получения значений всех столбцов. Этот метод обычно можно использовать независимо от типа данных столбца, поскольку в большинстве драйверов поддерживается преобразование любого типа данных в его строковое представление. С другой стороны, сведения о типе данных могут быть использованы в приложении для сохранения значений столбцов в более подходящей структуре с последующим применением соответствующего метода get() к каждому столбцу в зависимости от его типа данных. Необходимость в этом может возникнуть, если данные используются в математических расчетах, однако нередко более удобной оказывается выборка значений столбцов в виде строк в целях их последующего отображения.

При использовании метода getlnt() и других числовых методов может потребоваться специальная обработка пустых значений. Так, метод wasNull() может быть использован для того, чтобы определить, является ли пустым значение последнего считанного столбца:

double comm=rset.getDouble("COMM");

if(rset.wasNull())

// выполнить обработку пустого значения (например, установить соответствующий признак)

. . . . . . . . . .

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]