Столбец ResultSet не указан явно в запросе

Читая эту официальную документацию:

Для столбцов, которые НЕ указаны явно в запросе, лучше использовать номера столбцов. Если используются имена столбцов, программист должен позаботиться о том, чтобы они однозначно ссылались на предполагаемые столбцы, что может быть гарантировано с помощью предложения SQL AS.

Что такое столбец, имя которого не указано явно в запросе? Что они имеют в виду с этим?

Спасибо,

Это действительно так

3 ответа

Решение

Вычисляемые столбцы / выражения имеют произвольные имена, например

select max(salary) from employee

если вы изучили имя столбца JDBC, оно обычно называется таким же, как выражение - то есть в наборе строк столбец может называться буквально "max(salary)", но это специфично для базы данных и ненадежно.

У вас есть два варианта:

  1. Используйте номер столбца (один на основе), например rowset.get(1)
  2. Назовите столбец в запросе,

Т.е.

select max(salary) as max_salary from employee

Я предпочитаю второй вариант - он гораздо менее хрупкий и его легче понять.

Это столбцы как count(*) или результат функции как lower() которые не указаны явно в запросе.

Если у вас есть

 select count(*) from employees // query 1

Теперь вы не можете использовать rs.getString(columnLabel) если вы не делаете

выберите количество (*) как общее число сотрудников

 rs.getString("total Number") unless you do

Так что имеет смысл использовать

  getString(int columnIndex) with query 1 instead of rs.getString(columnLabel)

С приведенным выше примером предложение имеет полный смысл

Для столбцов, которые НЕ указаны явно в запросе, лучше использовать номера столбцов. Если используются имена столбцов, программист должен позаботиться о том, чтобы они однозначно ссылались на предполагаемые столбцы, что может быть гарантировано с помощью предложения SQL AS.

Другие вопросы по тегам