Chr*_*ris 82 .net c# asp.net odbc boolean-logic
我有一个通过Odbc连接到数据库的方法.我正在调用的存储过程有一个返回值,从数据库端是一个'Char'.现在我将该返回值作为字符串抓取并在简单的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;
}
Run Code Online (Sandbox Code Playgroud)
处理这种情况的正确方法是什么?我试过'Convert.ToBoolean()',这似乎是一个明显的答案,但我遇到了'字符串未被识别为有效的布尔值.'抛出异常.我在这里遗漏了什么,还是有另一种方法让'1'和'0'表现得像真假一样?
谢谢!
kem*_*002 143
怎么样:
return (returnValue == "1");
Run Code Online (Sandbox Code Playgroud)
或者如下所示:
return (returnValue != "0");
Run Code Online (Sandbox Code Playgroud)
正确的将取决于您所寻找的成功结果.
小智 97
在一行代码中:
bool bVal = Convert.ToBoolean(Convert.ToInt16(returnValue))
Run Code Online (Sandbox Code Playgroud)
Zac*_*son 12
如果您希望转换始终成功,那么转换字符串的最佳方式可能是考虑"1"
as 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.");
}
Run Code Online (Sandbox Code Playgroud)
您可以使用该表格:
return returnValue.Equals("1") ? true : false;
Run Code Online (Sandbox Code Playgroud)
或者更简单(感谢 Jurijs Kastanovs):
return returnValue.Equals("1");
Run Code Online (Sandbox Code Playgroud)
小智 5
将返回类型设置为numeric - 您不需要char(所以不要使用它); 可以使用Convert.ToBoolean(num)转换数值(0/1)
否则:使用凯文的回答
归档时间: |
|
查看次数: |
153283 次 |
最近记录: |