2010-05-31 2 views

ответ

0

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

Редактировать: RE: "что такое динамический sql". Подход заключается в следующем.

DECLARE @Value nvarchar(100) 
DECLARE @InsertString nvarchar(1000) 
DECLARE @name sysname 

SET @name ='name' 
SET @Value = 'a' 

SET @InsertString= 'INSERT INTO EMPLOYEES (id,' + @name + ') values(1, @Value)' 


EXEC sp_executesql @InsertString, N'@Value nvarchar(100)', @Value 

Однако есть 2 проблемы. Первое имя @ должно быть доказательством SQL Injection. По той же причине вы также хотели бы использовать параметр для @Value. Однако тип данных для этого должен быть указан заранее, что означает, что он не подходит для всех столбцов. Поэтому при отражении вам будет лучше делать это на вашем прикладном уровне. (NB: те же соображения, касающиеся SQL-инъекции, все еще применяются, и вашему прикладному коду нужно будет добавить параметр нужного типа для столбца)

+0

Что такое динамический sql – shmandor

+0

спасибо martin smith – shmandor

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