Tengo un método que se conecta a una base de datos a través de Odbc. El procedimiento almacenado que tengo llamada tiene un valor de retorno que desde el lado de la base de datos es un 'Char'. En este momento estoy agarrando que devuelven valor como una cadena y usándolo en una simple declaración if. Realmente no me gusta la idea de comparar una cadena como esta, cuando sólo dos valores pueden volver de la base de datos, 0 y 1.Cómo convertir "0" y "1" a falso y verdadero
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;
}
¿Cuál sería la forma correcta de manejar esta situación. He intentado con 'Convert.ToBoolean()' que parecía como la respuesta obvia, pero me encontré con 'String no se reconoció como un booleano válido. 'excepción lanzada. ¿Me falta algo aquí, o hay otra forma de hacer que '1' y '0' actúen como verdadero y falso?
Gracias!
¿Correcto? Comprobar; ¿Conciso? Comprobar; ¿Elegante? Comprobar. +1. – Earlz
Yo recomendaría usar 'return (returnValue! =" 0 ")'. Sería más natural que '0' sea' falso' y que cada número que no sea cero sea 'verdadero'.Por supuesto, aquí tenemos el caso donde Chris usa cadenas en lugar de números, por lo que este comentario solo es parcialmente válido;) – Gacek
Siempre es un debate. 0 también significa ERROR_SUCCESS lo que significa que todo salió bien. Pero estoy de acuerdo con Gacek en que es más natural. –