내 코드에서 간단한 매개 변수화 된 쿼리를 사용합니다.
매개 변수가 많으며 일부는 NULL 일 수 있으며 일부 경우 null 일 경우 FK 일 때 불평합니다.
저장 프로 시저을 사용하지 않고 어떻게이 매개 변수를 선택적 매개 변수로 지정할 수 있습니까? .
명확하게하려면 해당 필드를 업데이트하지 않으려면 매개 변수가 null 인 경우를 원합니다.parameterizaed 쿼리에서 선택적 매개 변수를 만드는 방법
conn.Open();
string sql = @"UPDATE UserProfile
SET FirstName = @p_FirstName
,LastName = @p_LastName
,Gender = @p_Gender
,DateOfBirth = @p_DateOfBirth
,CityId = @p_CityId
,MartialStatusId = @p_MartialStatusId
,ProfileImageId = @p_ProfileImageId
WHERE UserId = @p_UserId";
using (SqlCommand cmd = new SqlCommand(sql, conn))
{
cmd.Parameters.AddWithValue("@p_FirstName", userProfile.FirstName);
cmd.Parameters.AddWithValue("@p_LastName", userProfile.LastName);
cmd.Parameters.AddWithValue("@p_Gender", userProfile.Gender);
cmd.Parameters.AddWithValue("@p_DateOfBirth", userProfile.DateOfBirth);
cmd.Parameters.AddWithValue("@p_CityId", userProfile.CityId);
cmd.Parameters.AddWithValue("@p_MartialStatusId", userProfile.MartialStatusId);
cmd.Parameters.AddWithValue("@p_ProfileImageId", userProfile.ProfileImageId);
cmd.Parameters.AddWithValue("@p_UserId", userProfile.UserId);
cmd.ExecuteNonQuery();
}
_nullable_를 만드는 것으로 해결되지 않습니까? –
슬프게도 null 병합 연산자의 반대가 없습니다. 각 매개 변수에 대해 수동 if (userProfile.FirstName)! = null {}'검사를 수행해야합니다. –
SET FirstName = ISNULL (@p_FirstName, FirstName) , 성 = ISNULL (@p_ 이름, 성) ... 등 – realnumber3012