programing

C#.net 코드에서 null 변수를 SQL 저장 프로시저로 전달하는 방법

iphone6s 2023. 6. 21. 22:24
반응형

C#.net 코드에서 null 변수를 SQL 저장 프로시저로 전달하는 방법

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;

이제 이 저장 프로시저에 다른 두 매개 변수를 전달해야 합니다(둘 다 유형입니다).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파라미터의 값으로 이동합니다.값 속성:

    SqlParameters[0] = new SqlParameter("LedgerID", SqlDbType.BigInt );
    SqlParameters[0].Value = DBNull.Value;

두 개의 DateTime 매개 변수를 조정하기만 하면 됩니다. 물론 사용 방법을 보여줍니다.DBNull.Value여기에 자산 가치를 입력합니다.

마르크

오래된 질문이지만 nullable 매개 변수를 만드는 상당히 깨끗한 방법은 다음과 같습니다.

new SqlParameter("@note", (object) request.Body ?? DBNull.Value);

요청이 있으면.몸에는 가치가 있고, 그 가치가 사용됩니다.null이면 DbNull입니다.값이 사용됩니다.

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로 변경됩니다.값, 그렇지 않으면 그대로 유지됩니다.

이것을 시도해 보세요! 구문은 줄이 없고 훨씬 더 압축적입니다! 이 접근법으로 추가할 속성을 추가하는 것을 잊지 마세요!

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...

언급URL : https://stackoverflow.com/questions/1207404/how-to-pass-a-null-variable-to-a-sql-stored-procedure-from-c-net-code

반응형