2009-11-17 4 views
-3

나는 테이블에서 레코드를 삭제하는 것이 맞습니까?

나에게

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; 

메모를 도와주세요,이 올바른지 여부를 C#에서이 쿼리를 실행하여, 테이블에서 일부 레코드를 삭제하려면 : str_MSISDN가 삽입 된 번호를 저장하여 StringBuilder입니다 TextField에서.

+2

코드를 읽을 수 있도록 형식을 지정하는 방법 (코드 4자를 들여 쓰기하여 코드로 처리하도록 허용하는 방법)에 대해 질문하고 질문에서 수행 할 작업을 설명하십시오. –

답변

3

적절한 SQL 매개 변수를 사용해야합니다. 당신이 주입 공격을 위해 열어 둡니다 이후 문자열 건물을 사용하지 마십시오.

add parameters to SqlCommands에 대한 자세한 내용은이 튜토리얼을 참조하십시오.

+0

결코 절대로 말하지 마십시오. StringBuilder가 사용자 입력을 기반으로 작성되지 않은 경우 매개 변수를 사용하는 것보다 낫습니다. 알 수없는 ID 수 때문에 Sql Server에서 쿼리가 캐시되지 않을 수 있습니다. –

+1

@ Yuriy : "결코"강하지는 않지만 동적 SQL은 최후의 수단이라는 데 동의 할 것입니다. "알 수없는 ID 수"는 변명의 여지가 없습니다. 그 외에 다른 좋은 방법이 있습니다. –

+0

@Joel : 물어볼 게, 여기에 문제가있다. Id 필드가 Guid 인 응용 프로그램이 있습니다. 응용 프로그램에 사용자 항목이 없습니다. 단일 테이블에서 10,000 개의 행을 삭제하는 것이 일반적입니다. 선택된 행은 데이터베이스의 다른 데이터에서 파생 될 수 없습니다. 너 뭐하니? –

관련 문제