IT

"0"과 "1"을 거짓과 참으로 변환하는 방법

itgroup 2023. 4. 28. 20:28
반응형

"0"과 "1"을 거짓과 참으로 변환하는 방법

Odbc를 통해 데이터베이스에 연결하는 방법이 있습니다.제가 호출하는 저장 프로시저에는 데이터베이스 측에서 '문자'인 반환 값이 있습니다.지금은 반환 값을 문자열로 가져와서 간단한 if 문으로 사용하고 있습니다.데이터베이스에서 0과 1이라는 두 개의 값만 돌아올 수 있는데 이런 문자열을 비교하는 것은 정말 마음에 들지 않습니다.

OdbcCommand fetchCommand = new OdbcCommand(storedProc, conn);

fetchCommand.CommandType = CommandType.StoredProcedure;
fetchCommand.Parameters.AddWithValue("@column ", myCustomParameter);
fetchCommand.Parameters.Add("@myReturnValue", OdbcType.Char, 1)
            .Direction = ParameterDirection.Output;
fetchCommand.ExecuteNonQuery();

string returnValue = fetchCommand.Parameters["@myReturnValue"].Value.ToString();
if (returnValue == "1")
{
    return true;
} 

이 상황을 처리하는 적절한 방법은 무엇일까요?'변환' 해봤어요.'ToBoolean()'은 당연한 답처럼 보였지만 'String'과 마주쳤는데 유효한 Boolean으로 인식되지 않았습니다.예외가 발생했습니다.제가 여기서 뭔가를 놓치고 있는 것일까요, 아니면 '1'과 '0'이 참이고 거짓인 것처럼 행동하게 만드는 다른 방법이 있을까요?

감사합니다!

어때요?

return (returnValue == "1");

또는 아래 제안된 바와 같이:

return (returnValue != "0");

정확한 것은 당신이 성공적인 결과로 무엇을 찾느냐에 따라 달라집니다.

코드 한 줄로:

bool bVal = Convert.ToBoolean(Convert.ToInt16(returnValue))

변환이 항상 성공하기를 원한다면 문자열을 변환하는 가장 좋은 방법은 다음과 같습니다."1"~하듯이true그리고 다른 것들은.false(Kevin이 하는 것처럼).변환이 실패하기를 원하는 경우 이외의 경우"1"또는"0"를 반환하면 다음과 같이 하면 됩니다(도움말 방법으로 입력할 수 있음).

if (returnValue == "1")
{
    return true;
}
else if (returnValue == "0")
{
    return false;
}
else
{
    throw new FormatException("The string is not a recognized as a valid boolean value.");
}

이 양식을 사용할 수 있습니다.

return returnValue.Equals("1") ? true : false;

아니면 더 간단하게(주리스 카스타노프스 덕분):

return returnValue.Equals("1");

반환 유형을 숫자로 설정 - 문자가 필요하지 않으므로 사용하지 마십시오. 숫자 값(0/1)은 변환을 사용하여 변환할 수 있습니다.부울로(숫자)

그렇지 않은 경우: 케빈의 답변을 사용합니다.

또는 부울 값이 반환되지 않는 경우 다음과 같은 작업을 수행할 수 있습니다.

bool boolValue = (returnValue == "1");

내 솔루션(vb.net ):

Private Function ConvertToBoolean(p1 As Object) As Boolean
    If p1 Is Nothing Then Return False
    If IsDBNull(p1) Then Return False
    If p1.ToString = "1" Then Return True
    If p1.ToString.ToLower = "true" Then Return True
    Return False
End Function
(returnValue != "1" ? false : true);

만약 당신이 변환하기를 원하지 않는다면.그냥 사용;

 bool _status = status == "1" ? true : false;

아마도 당신은 당신이 원하는 대로 값을 돌려줄 것입니다.

언급URL : https://stackoverflow.com/questions/2648074/how-to-convert-0-and-1-to-false-and-true

반응형