2012-05-07 2 views
0

Как удалить пустые столбцы из результатов или DataList?Java: Удалить пустые столбцы в Resultset

Например: я запросить затем SQL возвращает Resultset

Name Age Address Telephone 
---- --- ------- --------- 
Zed  23    12345456 
Charlo 25    53232323 

Как удалить пустую колонку «Адрес» в Resultset?

Заранее спасибо.

+1

Выбор только имени, возраста и телефона, если столбец «Адрес» всегда не установлен, если он иногда установлен, тогда вам нужно обработать нуль. – BigMike

+2

Если адрес всегда пуст, не выбирайте его. –

+0

Но проблема в том, что мы не знаем, какой столбец будет иметь значение null перед запросом. – Ianthe

ответ

1

Нет. Вы указываете SQL, какие столбцы вы хотите в запросе, и он дает вам все столбцы, которые вы просили.

+0

Лучший ответ на эту тему IMO - чистый и простой. – Romain

+0

Столбцы динамически определяются пользователем вместе с фильтрами в предложении where, поэтому мне нужно создать запрос, который до выполнения я не знаю, какой столбец будет иметь пустые данные. Использование предложения «NOT NULL» исключает строки с пустым значением в столбце, но не обязательно означает, что этот столбец пуст.Поэтому после запроса мне нужно удалить пустые столбцы из ResultSet. – Ianthe

+0

@sprenna вам нужно будет сделать это на стороне java. – Kevin

0

Если адрес всегда пуст или не требуется, просто измените запрос, который генерирует ResultSet. Например, ваш запрос будет что-то вроде ...

SELECT Name, Age, Telephone FROM Table; 

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

Вы также можете изменить свой запрос только возвращать результаты с адреса, такие, как этот ...

SELECT Name, Age, Address, Telephone FROM Table WHERE Address IS NOT NULL; 

Вы не можете заранее знать, является ли весь столбец пустой - вы должны перебрать каждая запись в вашем ResultSet обнаружить его, или написать запрос счета, как это ...

SELECT COUNT(Address) FROM Table WHERE Address IS NOT NULL; 

Это вернет 0, если нет адреса. Вы можете использовать это и на своих других столбцах.

0

Вы не можете удалить столбец из запроса, если он всегда равен нулю, но вы можете исключить все значения NULL из объекта, на который вы указываете ResultSet. (Вы не проходите ResultSet из уровня сохранения, не так ли?)

0

Если столбец всегда пуст, то, как отметили другие, просто удалите его из предложения SELECT в запросе. Если вы используете «SELECT *», не делайте этого. Это плохая практика. Вы можете обрабатывать всевозможные неиспользуемые данные. Если SELECT * забирает одно ненужное 5-байтовое поле, я не думаю, что это не так. Но даже если это все, что он делает сейчас, на следующей неделе вы или кто-то еще может добавить 50 бит BLOB-поля в запись, а затем, чтобы получить 50 байтов, которые вам нужны, вы также обрабатываете 50k, которые вам не нужны.

Если вы имеете в виду, что после того, как вы получите ResultSet, вы обнаружите, что столбец всегда пустой или нулевой, и что? Вы должны прочитать данные, чтобы обнаружить это. Тот факт, что столбец находится в вашем ResultSet, не влияет на то, что вы показываете на экране. Если вы хотите удалить столбец с дисплея, вы можете сделать это в коде.

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