MySQL & mSQL



              

Динамический доступ к базе данных


До сих пор мы имели дело с приложениями, в которых во время компиляции точно известно, что нужно будет делать. Если бы это был единственный тип поддержки, обеспечиваемый 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 приводится соответствующий исходный код.




    Содержание  Назад  Вперед