2015-08-10 5 views
0

Я получаю эту ошибку, пока я получаю значение из набора результатов.Неверное имя столбца - ошибка

Ошибка: com.microsoft.sqlserver.jdbc.SQLServerException: Имя столбца company.short_name не является действительным

СЛУЧАЙ 1:

select company.short_Name,location_name from company,location; 

этот запрос выполняется хорошо на SQL Сервер, но в моем java-коде, когда я пытаюсь получить значение, например resultset.getString("company.short_name");, это время приведёт вышеприведенную ошибку.

СЛУЧАЙ 2:

select company.short_Name short_name,location_name from company,location; 

и получить значение, как resultset.getString("short_name");, чем нормально работать как с базой данных MySQL и MSSQL.

Я переношу свою базу данных с MySQL на MSSQL.выше дело 1 отлично работает в MySQL, но почему это не работает в MSSQL?

+0

Является ли учетная запись MSSQL чувствительной к регистру? – TTeeple

+0

Это не чувствительный к регистру. –

ответ

3

resultset.getString("company.short_name"); не правильный здесь. Не нужно указывать полное имя при попытке получить данные в вашем приложении. Просто укажите имя столбца, как resultset.getString("short_name");.

Причина, хотя вы скажете select company.short_Name ..., запросите имя столбца как short_Name, так как это определено в схеме таблицы.

В случае, если обе таблицы имеет тот же столбец, который может привести к двусмысленности, дать имя псевдонима для столбцов, как

select company.short_Name as company_shortname, 
     location.short_Name as location_shortname, 
location.location_name from company,location; 
+0

, а если столбцы short_name также доступны в таблице местоположений?. это даст неоднозначную ошибку. поэтому имя таблицы необходимо определить. –

+0

В этом случае определите псевдоним для столбцов. обе таблицы могут иметь одинаковые столбцы, но это зависит от того, выбираете вы их или нет. – Rahul

+0

да, что я знаю, что я сказал в моей части вопроса 2, но что мне нужно делать во всех классах моего приложения.so есть ли какое-нибудь решение, которое мы можем настроить в MSSQL? –

0

функция resultset.getString(String columnLabel)

Получает значение определяемого столбца в текущей строке этого объекта ResultSet как String на языке программирования Java.

Параметры:

columnLabel метка для столбца, указанного с SQL AS пункта. Если SQL AS статье не указано, то метка является именем столбца

Возвращает:

значение столбца; если значение равно SQL NULL, возвращаемое значение равно null Throws: SQLException - если значение columnLabel недействительно; если ошибка доступа к базе данных происходит, или этот метод вызывается на закрытом наборе результатов

в функции resultset.getString(String columnLabel), то arg это имя столбца для выполнения SQL, оператор select company.short_Name,location_name from company,location; получит результирующий набор, который имеет заголовки таблицы short_Name,location_name

1

Когда вы

select company.short_Name,location_name from company,location; 

Это выходы запроса имя столбца sHORT_NAME и Resultset также будет иметь sHORT_NAME

с с ompany.short_name не существует, вы получаете сообщение об ошибке.

Смежные вопросы