SQL Server 데이터베이스에 문자열 또는 null을 삽입하는 문제
문제
방금이 게시물에서 최고 답변을 읽었습니다.
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]);
결함만이 사전을 두 번 찾아 볼 수 있다는 것입니다!
제휴하지 않습니다 StackOverflow