데이터 원본에서 데이터 업데이트
적용 대상: .NET Framework NET .NET Standard
INSERT, UPDATE 또는 DELETE와 같이 데이터를 수정하는 SQL 문은 행을 반환하지 않습니다. 마찬가지로 대부분의 저장 프로시저도 동작을 수행하기는 하지만 행을 반환하지는 않습니다. 행을 반환하지 않는 명령을 실행하려면 필요한 Parameters를 포함하여 적절한 SQL 명령 및 Connection으로 Command 개체를 만듭니다. SqlCommand 개체의 ExecuteNonQuery 메서드를 사용하여 명령을 실행합니다.
참고 항목
ExecuteNonQuery 메서드는 실행된 문이나 저장 프로시저에 의해 영향을 받는 행 수를 나타내는 정수를 반환합니다. 여러 문을 실행하는 경우 반환되는 값은 실행된 모든 문에 의해 영향을 받는 레코드의 합계입니다.
예시
다음 코드 예제에서는 ExecuteNonQuery를 사용하여 레코드를 데이터베이스에 삽입하기 위한 INSERT 문을 실행합니다.
// Assumes connection is a valid SqlConnection.
connection.Open();
string queryString = "INSERT INTO Customers " +
"(CustomerID, CompanyName) Values('NWIND', 'Northwind Traders')";
SqlCommand command = new SqlCommand(queryString, connection);
Int32 recordsAffected = command.ExecuteNonQuery();
다음 코드 예제에서는 카탈로그 작업 수행에 있는 샘플 코드에서 만든 저장 프로시저를 실행합니다. 저장 프로시저가 행을 반환하지 않으므로 ExecuteNonQuery 메서드가 사용되지만 저장 프로시저는 입력 매개 변수를 받고 출력 매개 변수와 반환 값을 반환합니다.
// Assumes command is a valid SqlCommand with an open connection.
command.CommandText = "InsertCategory";
command.CommandType = CommandType.StoredProcedure;
SqlParameter parameter = command.Parameters.Add("@RowCount", SqlDbType.Int);
parameter.Direction = ParameterDirection.ReturnValue;
parameter = command.Parameters.Add("@CategoryName", SqlDbType.NChar, 15);
parameter = command.Parameters.Add("@Identity", SqlDbType.Int);
parameter.Direction = ParameterDirection.Output;
command.Parameters["@CategoryName"].Value = "New Category";
command.ExecuteNonQuery();
Int32 categoryID = (Int32) command.Parameters["@Identity"].Value;
Int32 rowCount = (Int32) command.Parameters["@RowCount"].Value;