2009-03-04 2 views
1

SQLDataAdapter을 사용하여 테이블에서 데이터를 삭제하려고 시도 했으므로 DeleteCommand을 제공해야합니다.SQLDataAdapter에 사용할 SQLCommand 만들기

는 SQL 내가 행을 삭제하는 데 사용하는 것입니다 :

DELETE FROM table WHERE ID = x 

문제는 이렇게이다 : 어떻게 함께 x을 대체하기 위해 무엇을 DataAdapter에 지정합니까? DataAdapter을 생성하는 SQL은 업데이트 할 데이터 테이블 (외부 조인)과 약간 다릅니다 (조인하지 않음).

어떻게하면됩니까?

답변

4

당신이 명령을 삭제하는 매개 변수를 전달할 수 있습니다

// Create the DeleteCommand. 
command = new SqlCommand(
    "DELETE FROM Customers WHERE CustomerID = @CustomerID", connection); 

// Add the parameters for the DeleteCommand. 
parameter = command.Parameters.Add(
     "@CustomerID", SqlDbType.NChar, 5, "CustomerID"); 
parameter.SourceVersion = DataRowVersion.Original; 

adapter.DeleteCommand = command; 

MSDN

+0

SQL 인젝션을 확인해야합니까? – Malfist

+0

아니, 당신은 매개 변수로 입력을 전달하고 있습니다. – Canavar

1

사용 SourceColumn 및 SourceVersion SqlParameter에 속성 :

여기
 var deleteCommand = connection.CreateCommand(); 
     deleteCommand = "DELETE FROM table WHERE ID = @ID"; 
     var param = new SqlParameter("ID"); 
     param.SourceColumn = "the Select Column"; 
     param.SourceVersion = DataRowVersion.Original; 
     deleteCommand.Parameters.Add (param); 
+0

에서 가져온 코드는 SourceVersion은 무엇인가 설명 할 수 있습니까? – Malfist

+0

SourceVersion은 사용할 값을 나타냅니다. 원본은 선택 쿼리에서 가져온 원래 값이며, 현재 필드의 현재 값은 수정 한 것처럼 나타납니다. – albertein

관련 문제