Использование JDBC
Использование JDBC 363
В листинге 12.7 класс ResultSetMetaData используется для получения имени и типа данных первого поля объекта ResultSet с именем rs. Программа является логическим продолжением листинга 12.4, в котором был создан объект rs.
Даже если отвлечься от соображений эффективности, механизм PreparedStatement гораздо надежнее подготовки нескольких команд в объектах Statement.
Листинг 12.7. Использование объекта ResultSetMetaData.
ResultSetMetaData rsmd – null:
try {
rsmd = rs.getMetaData():
} catch (SQLException se) {
System.out.printlnC'We got an exception while getting the metadata:" +
"check the connection."):
se.printStackTrace();
System.exit(l):
}
String columnName = null.
columnType = null:
try {
columnName = rsmd.getColumnName(1):
columnType – rsmd.getColumnTypeName(l):
} catch (SQLException se) {
System.out.printlnC'We got an exception while getting the column name:" +
"check the connection."):
se.printStackTrace():
System.exit(l):
}
System.out.printC'The name of the first column is: '"):
System.out.print(columnName);
System.out.printlrK…..):
System.out.printC'The data type of the first column is: "):
System.out.println(columnType):
Класс ResultSetMetaData содержит много других полезных методов. Описания приведены в документации JDK API.
DatabaseMetaData
Наконец, класс DatabaseMetaData предназначен для получения информации о базе данных, с которой вы работаете. В частности, он позволяет получить ответ па перечисленные ниже вопросы.
- Какие каталоги присутствуют в базе данных?
- С каким типом базы я работаю?
- Под каким именем пользователя я работаю с базой данных?
В листинге 12.8 объект DatabaseMetaData используется для получения у драйвера JDBC имени пользователя, с которым было создано подключение, и URL-адреса базы данных.
Листинг 12.8. Использование объекта DatabaseMetaData.
DatabaseMetaData dbmd = null:
try {
dbmd = c.getMetaData():
} catch (SQLException se) {
System.out.printlnC'We got an exception while getting the metadata:" +
" check the connection."):
se.printStackTrace():
System.exit(l): }
String username = null:
try {
username = dbmd.getUserName():
} catch (SQLException se) {
System.out.printlnC'We got an exception while getting the username:" +
"check the connection."); se.printStackTraceO;
System.exit(l):
}
String url = null;
try {
url = dbmd.getURLO;
} catch (SQLException se) {
System.out.printlnC'We got an exception while getting the URL:" +
"check the connection.");
se.printStackTrace();
System.exit(l):
}
System.out.printlnC'You are connected to '" + url +
'" with user name '" + username +…..);
Как было сказано выше, лучшим источником информации о других методах DatabaseMetaData является документация JDK API.
