2009-11-17 2 views
-3

Я хочу удалить некоторые записи из таблицы, запустив этот запрос в C# это правильно или нет,Удаление записей из таблицы, это правильно?

Пожалуйста, помогите мне

SqlCommand cmdRe = new SqlCommand("insert into msisdn_master SELECT * from tblDeactive 
where msisdn in (" + str_MSISDN + ")", cn); 
SqlCommand cmdRed = new SqlCommand("delete from tblDeactive where msisdn in ("+str_MSISDN+")", cn); 
cmdRe.CommandType = CommandType.Text; 
cmdRed.CommandType = CommandType.Text; 

примечание: str_MSISDN является StringBuilder, который хранит номер, который вставляется в TextField.

+2

Как насчет того, чтобы форматировать его так, чтобы он читался (отступы кода 4 символа, чтобы он мог рассматриваться как код), и укажите, что вы пытаетесь сделать в вопросе. –

ответ

3

Вы должны использовать правильные параметры SQL. НИКОГДА не используйте строковое построение, так как это оставляет вас открытым для инъекций.

Прочтите этот учебник, чтобы узнать, как add parameters to SqlCommands.

+0

Никогда не говори никогда. Если этот StringBuilder не создан из пользовательского ввода, он, вероятно, будет лучше, чем использование параметров. Из-за неизвестного количества идентификаторов запрос может не кэшироваться в Sql Server. –

+1

@Yuriy: Я соглашусь, что «никогда» не является сильным, но динамический sql - это метод последней инстанции. «Неизвестное количество идентификаторов» не является оправданием. Есть и другие, лучшие способы. –

+0

@Joel: Я буду кусать, вот ваша проблема. У вас есть приложение, в котором поле Id является Guid. Приложение не имеет входа пользователя. Для него обычно удалять 10 000 строк в одной таблице. Выбранные строки не могут быть получены из других данных в базе данных. Чем ты занимаешься? –

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