2011-11-12 21 views
5

ho scritto questa query SQL:Se la condizione per la query con Vuoto Risultato

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(); 

e vorrei aggiungere un po 'se la condizione del tipo:

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

Come posso aggiungere una condizione if per quando la mia domanda non ha una risposta?

risposta

8

Rimuovere la chiamata alla cmd2.ExecuteNonQuery, quindi aggiungere qualcosa di simile:

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

è possibile utilizzare un lettore di come questo:

Questo presuppone che il tipo di codice è intero, così come cambia necessaria

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

Secondo MSDN:

Se la prima colonna della prima riga nel set di risultati non viene trovata, viene restituito un riferimento null (Nothing in Visual Basic). Se il valore nel database è nullo, la query restituisce DBNull.Value.

Quindi, si può solo scrivere:

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

In alternativa, è possibile utilizzare ExecuteReader, quindi verificare se restituito lettore HasRows.

Problemi correlati