문제

방금이 게시물에서 최고 답변을 읽었습니다.
SQL Server 데이터베이스에 문자열 또는 null을 삽입하는 문제

내가 틀렸다면 저를 바로 잡으십시오. 그러나 ??-연산자는 같은 유형의 두 변수에 사용할 수있을뿐만 아니라, 누군가가 내 사소한 문제를 해결할 수 있다면 크게 감사하지 않을 것입니다.

아래 프로젝트와 비슷한 코드를 삽입하려고했습니다.

Dictionary<string, string> strings = new Dictionary<string, string>()
{
    {"@param0", strParam0},
    {"@param1", strParam1},
    {"@param2", strParam2}
};
foreach (string param in strings.Keys)
{
    cmd.Parameters.AddWithValue(param, strings[param] ?? DBNull.Value);
}

그러나 Visual Studio는 다음과 같은 메시지를 불평합니다.
"운영자 '??' 'string'및 'system.dbnull'유형의 피연산자에 적용 할 수 없습니다. "

도움이 되었습니까?

해결책

dbnull과 null은 같은 유형이 아니며 무효 유형이나 기준 유형 및 dbnull도 아닙니다. 당신은 만 사용할 수 있습니까 ?? 동일한 유형의 값으로.

하나는 생각할 수 있습니까 ?? 구문 설탕으로 연산자 :

(left != null) ? left : right

그리고 제 3의 조작은 왼쪽과 오른쪽이 모두 같은 유형이 되려면 왼쪽과 오른쪽의 왼쪽과 오른쪽이 필요합니다. 운영자도 같은 유형이어야합니다.

불행히도, 아니요 .. 당신은 적어도 못생긴 캐스팅이 없다면 이런 식으로 할 수 없습니다.

다른 팁

노력하다:

cmd.Parameters.AddWithValue(param, (object)strings[param] ?? DBNull.Value);
    cmd.Parameters.AddWithValue(param, strings[param] == null ? DBNull.Value : strings[param]);

결함만이 사전을 두 번 찾아 볼 수 있다는 것입니다!

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top