C # .net 코드에서 SQL 저장 프로 시저에 null 변수를 전달하는 방법
C # .net 코드에서 SQL 저장 프로 시저를 호출합니다.
SqlHelper.ExecuteDataset(sqlConnection, CommandType.StoredProcedure, STORED_PROC_NAME, sqlParameters);
여기서 sqlParameters
변수는 다음과 같이 정의됩니다.
SqlParameter[] sqlParameters = new SqlParameter[SQL_NUMBER_PARAMETERS];
Log.Logger.Debug(string.Format("Running proc: {0} ", STORED_PROC_NAME));
SqlParameters[0] = new SqlParameter("fieldID", SqlDbType.BigInt );
SqlParameters[0].Value = fieldID;
SqlParameters[0].Direction = ParameterDirection.Input;
이제이 Stored Proc에 다른 두 개의 매개 변수를 전달해야합니다 (둘 다 유형입니다 SqlDateTime
) .이 경우 NULL 이됩니다.
감사,
에
SqlParameters[1] = new SqlParameter("Date1", SqlDbType.SqlDateTime);
SqlParameters[1].Value = DBNull.Value;
SqlParameters[1].Direction = ParameterDirection.Input;
... 두 번째 복사합니다.
를 사용하여 DBNull.Value
더 나은 아직, 당신의 저장 프로 시저 매개 변수가 NULL의 기본값을가합니다. 또는 Nullable<DateTime>
매개 변수가 때때로 유효한 DateTime 객체가되는 경우 매개 변수를 사용 합니다.
DBNull.Value
매개 변수의 .Value 속성에를 전달할 수 있습니다 .
SqlParameters[0] = new SqlParameter("LedgerID", SqlDbType.BigInt );
SqlParameters[0].Value = DBNull.Value;
두 개의 DateTime 매개 변수를 조정하기 만하면 DBNull.Value
됩니다. 여기서 속성 값 을 사용하는 방법 만 보여줍니다 .
마크
null이면 DBNull로 변환하는 메서드를 사용합니다.
// Converts to DBNull, if Null
public static object ToDBNull(object value)
{
if (null != value)
return value;
return DBNull.Value;
}
따라서 매개 변수를 설정할 때 함수를 호출하면
sqlComm.Parameters.Add(new SqlParameter("@NoteNo", LibraryHelper.ToDBNull(NoteNo)));
이것은 모든 null을 보장하고 DBNull.Value로 변경됩니다. 그렇지 않으면 동일하게 유지됩니다.
오래된 질문이지만 여기에 nullable 매개 변수를 만드는 상당히 깨끗한 방법이 있습니다.
new SqlParameter("@note", (object) request.Body ?? DBNull.Value);
request.Body에 값이 있으면 해당 값이 사용됩니다. null이면 DbNull.Value가 사용됩니다.
이 시도! 구문은 줄이 적고 훨씬 더 간결합니다! 이 접근 방식으로 추가하려는 속성을 추가하는 것을 잊지 마십시오!
cmd.Parameters.Add(new SqlParameter{SqlValue=(object)username??DBNull.Value,ParameterName="user" } );
SQLParam = cmd.Parameters.Add("@RetailerID", SqlDbType.Int, 4)
If p_RetailerID.Length = 0 Or p_RetailerID = "0" Then
SQLParam.Value = DBNull.Value
Else
SQLParam.Value = p_RetailerID
End If
SQL 저장 프로 시저에서 매개 변수의 이름이 "Id"이고 데이터베이스 저장 프로 시저를 호출하는 데 사용하는 C # 함수가 유형 이름이라고 가정 해 보겠습니다 int?
. 이를 감안할 때 다음과 같이 문제를 해결할 수 있습니다.
public void storedProcedureName(Nullable<int> id, string name)
{
var idParameter = id.HasValue ?
new SqlParameter("Id", id) :
new SqlParameter { ParameterName = "Id", SqlDbType = SqlDbType.Int, Value = DBNull.Value };
// to be continued...
'Programing' 카테고리의 다른 글
반복 요소가있는 목록 만들기 (0) | 2020.11.24 |
---|---|
Android M 카메라 의도 + 권한 버그? (0) | 2020.11.24 |
Linux에서 디렉토리의 모든 * .js 파일을 재귀 적으로 찾으려면 어떻게해야합니까? (0) | 2020.11.24 |
선택한 열만있는 데이터 프레임에서 고유 (0) | 2020.11.24 |
Vim / vi에서 백 스페이스 키가 작동하지 않음 (0) | 2020.11.24 |