Столбец ResultSet не указан явно в запросе
Читая эту официальную документацию:
Для столбцов, которые НЕ указаны явно в запросе, лучше использовать номера столбцов. Если используются имена столбцов, программист должен позаботиться о том, чтобы они однозначно ссылались на предполагаемые столбцы, что может быть гарантировано с помощью предложения SQL AS.
Что такое столбец, имя которого не указано явно в запросе? Что они имеют в виду с этим?
Спасибо,
Это действительно так
3 ответа
Вычисляемые столбцы / выражения имеют произвольные имена, например
select max(salary) from employee
если вы изучили имя столбца JDBC, оно обычно называется таким же, как выражение - то есть в наборе строк столбец может называться буквально "max(salary)", но это специфично для базы данных и ненадежно.
У вас есть два варианта:
- Используйте номер столбца (один на основе), например
rowset.get(1)
- Назовите столбец в запросе,
Т.е.
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.