2011-11-12 20 views
5

he escrito esta consulta SQL:Si la condición para la consulta con los resultados vacío

SqlCommand cmd2 = new SqlCommand(); 
     cmd2.Connection = new SqlConnection(Class1.CnnStr); 
     cmd2.CommandText = "SELECT MAX(Code) FROM Table WHERE [email protected] "; 
     cmd2.Connection.Open(); 
     cmd2.Parameters.AddWithValue("@Number", Hidden_txt.Text); 
     cmd2.ExecuteNonQuery(); 

y me gustaría añadir un poco si perfectas condiciones:

if (cmd2.ExecuteScalar()=="Null") 
{....} 

¿Cómo puedo añadir una si la condición de cuando mi consulta no tiene una respuesta?

Respuesta

8

Retire la llamada a cmd2.ExecuteNonQuery, a continuación, añadir algo como esto:

object maxCode = cmd2.ExecuteScalar(); 
if (maxCode == null) 
{ 
    // Null 
} 
else 
{ 
    // do something with maxCode, you probably want to cast - e.g. (int)maxCode 
} 
3

Se puede utilizar un lector de la siguiente manera:

Esto supone que el tipo de código es un número entero, así como cambiar necesaria

SqlDataReader reader = cmd2.ExecuteReader; 
int code = 0; 
if (reader.Read) { 
    //whatever if it has a result 
    code = reader.GetInt32(0); 
} else { 
    //Whatever if it finds nothing 
} 
2

Según MSDN:

Si no se encuentra la primera columna de la primera fila del conjunto de resultados, se devuelve una referencia nula (Nothing en Visual Basic). Si el valor en la base de datos es nulo, la consulta devuelve DBNull.Value.

Por lo tanto, usted podría escribir:

if (cmd2.ExecuteScalar() == null) 
{....} 

Como alternativa, se puede usar ExecuteReader, a continuación, comprobar si el lector HasRows regresó.

Cuestiones relacionadas