Общее правило заключается в следующем: если вы открыли поток, вы должны закрыть его. Если вы этого не сделали, вы не должны. Убедитесь, что код симметричен.
В случае HttpServletResponse
он немного менее четкий, так как это не очевидно, если вызов getOutputStream()
- это операция, которая открывает поток. Джавадок просто говорит, что это «Returns a ServletOutputStream
»; аналогично для getWriter()
. В любом случае, ясно, что HttpServletResponse
«владеет» потоком / писателем, и он (или контейнер) отвечает за его закрытие снова.
Итак, чтобы ответить на ваш вопрос - нет, вы должны не закрывайте поток в этом случае. Контейнер должен это сделать, и если вы доберетесь до него, вы рискуете ввести тонкие ошибки в своем приложении.
Создайте столбец «Агент и поставщик» в типе данных bit
, затем обновите
update t
set supplier=case when Supplier_Agent='Supplier' then 1 else 0 end,
agent =case when Supplier_Agent='Agent' then 1 else 0 end
На сервере sql отсутствует логический тип данных, поэтому 0 означает false
, а 1 означает true
Используйте case when
update dbo.SuppliersNPD
set supplier= case when supplier_aggent='supplier' then 1 else 0 end,
agent= case when supplier_aggent='agent' then 1 else 0 end
Вы должны использовать функцию case when
, чтобы вы могли установить значение, проверяя определенное условие.
update SNPD
set SNPD.supplier= case when SNPD.Supplier_Agent='Supplier' then 1 else 0
end,
SNPD.Agent= case when SNPD.Supplier_Agent='Agent' then 1 else 0 end
FROM SuppliersNPD as SNPD
Я также рекомендую вам использовать перечисление вместо «поставщик» и «агент» для определения типа поставщика. Например, вы могли бы создать столбец с именем Type
и использовать код 100
для поставщиков и 200
для агентов. Это кажется более сложным, но облегчает ведение таблицы и часто используется в программном обеспечении ERP.