Estoy insertando datos en mi base de datos con un comando sql y parámetros. Todo lo que está en mi {} parte de prueba ... después de que tengo una captura {} que obtiene excepciones. Mi problema es que tengo cuadros de texto de fecha y cuadros de texto enteros.

¿Cómo puedo tener para mi campo de fecha?

`catch{FormatException)
{
messagebox.show("Your date field must be dd/mm/yyy");
}

Y como puedo tener para mi campo entero

`catch{FormatException)
    {
    messagebox.show("That field must be integer");
    }

¿Cómo puedo separar esas dos excepciones de formato?

0
nscott23 16 ago. 2016 a las 04:53

2 respuestas

La mejor respuesta

Ambos FormatException s dan valores diferentes para exc.Message (donde exc es la variable de excepción). Para un int, es "La cadena de entrada no tenía el formato correcto". y para un DateTime es "La cadena no se reconoció como una fecha y hora válida".

Entonces, podría usar un solo try-catch y verificar esta cadena al final, pero eso podría crear problemas más adelante (el código se vuelve difícil de mantener). Es mejor usar bloques try-catch separados.

string messageError = null;
string convertTodate = "34/";
string convertToInt = "3.5";
try
{
    int newInt = Convert.ToInt32(convertToInt);
}
catch(FormatException)
{
    messageError = "That field must be integer";
}
try
{
    DateTime newDate = Convert.ToDateTime(convertTodate);
}
catch(FormatException)
{
    messageError = "Your date field must be dd/mm/yyy";
}
if(string.IsNullOrEmpty(messageError))
{
    // All Ok
}
else
{
    // Display error contained witin messageError 
}
0
Aniruddha Varma 16 ago. 2016 a las 02:19

Para ingresar la fecha en lugar de usar el cuadro de texto, use DatePicker. Excluirá la necesidad de verificar el formato.

<DatePicker name="datePicker"></DatePicker>

Y para obtener el valor elegido por fecha detrás del código,

datePicker.SelectedDate

Ahora solo tiene que verificar el número entero.

int parsedValue;
if(int.TryParse(convertToInt, out parsedValue)){ 
    // All Ok
}
else {
     messageError = "That field must be integer";
     // Display error contained witin messageError 
}

No es necesario poner try catch también.

1
nkoniishvt 16 ago. 2016 a las 08:09