oComm = CreateCommand("IsMapAccessExist", spParams, TypeOfConnectionString.GeoAppBuilder);
bool exists = true;
exists = Boolean.Parse(oComm.ExecuteScalar().ToString());
return exist
exists的值为'true'但会抛出错误
FormatException was caught
String was not recognized as a valid Boolean.
答案 0 :(得分:3)
我觉得ExecuteScalar
返回的内容不是 "True"
或"False"
;也许是"1"
或"0"
。以下是调试方法:
var tmp = oComm.ExecuteScalar().ToString();
exists = Boolean.Parse(tmp);
然后查看调试器中tmp
持有的内容。
答案 1 :(得分:1)
.ExecuteScalar()
返回第一行的第一列。为了使它工作,做这样的事情:
int col = (int)oComm.ExecuteScalar();
if(col == null)
exists = false;
else
exists = true;
答案 2 :(得分:0)
ExecuteScalar不返回布尔值。阅读文档Here
答案 3 :(得分:0)
Boolean.Parse
必须传递“True”(Boolean.TrueString
)或“False”(Boolean.FalseString
)。
您可能最好使用Boolean.TryParse
,例如:
string value = "true";
bool couldParseString = Boolean.TryParse(value, out value);
if ( couldParseString )
{
// do some stuff
}
else
{
// handle the string not being correct
}
注意:您通常应该使用{type}。尝试 Parse而不是Parse。
答案 4 :(得分:0)
虽然已经很晚了,但这是一个使用Boolean.TryParse
的答案。
bool exists; // No need to assign
Boolean.TryParse(oComm.ExecuteScalar().ToString(),exists); // using TryParse
return exist;
说明:(MSDN)
如果转化
succeeded
,则包含true
,如果值等于 如果值等于TrueString
,则false
或FalseString
。如果 转化failed
,包含false
。
即使该值不是有效的TrueString
或FalseString
字段,您也始终会获得所需的值。
意图是不惜任何代价避免例外。即使失败也会返回false
,但程序将继续不停。
TryParse方法类似于Parse方法,但如果转换失败,TryParse方法不会抛出异常。