Valeur de retour à l'aide de la Chaîne de résultat=Commande.ExecuteScalar() erreur se produit lorsque le résultat renvoie la valeur null

Je veux extraire la 1ère ligne 1ère valeur de la cellule de base de données, il fonctionne bien avec le code ci-dessous . Mais quand il n'y a pas de résultat, il lève une Exception.

Comment gérer DBNull .

Dois-je changer ma requête ? de retour de la valeur si leur pas de record ?

Système.NullReferenceException: la référence d'Objet n'est pas définie à une instance d'un objet.

Code:

    public string absentDayNo(DateTime sdate, DateTime edate, string idemp)
    { 
       string result="0";
       string myQuery="select COUNT(idemp_atd) absentDayNo from td_atd where ";
       myQuery +=" absentdate_atd between '"+sdate+"' and '"+edate+" ";
       myQuery +=" and idemp_atd='"+idemp+"' group by idemp_atd ";

       SqlCommand cmd = new SqlCommand(myQuery, conn);
       conn.Open();
//System.NullReferenceException occurs when their is no data/result
       string getValue = cmd.ExecuteScalar().ToString();
         if (getValue != null)
         {
            result = getValue.ToString();
         }
         conn.Close();
        return result;
    }
  • Où il jette exception ??
  • Exception jette string getValue = cmd.ExecuteScalar().ToString(); moyenne erreur se produit lors de leur est le résultat
  • btw, c'est un vraiment mauvaise façon de construire une requête; claire et flagrante de l'injection sql trou, il y a aussi une internationalisation problème, et certains inutiles intermédiaire des chaînes de caractères. J'espère que ce n'est pas comment vous faites sql normalement...
  • Sry pour mon mauvais pratiquant habbit , et oui la prochaine fois je prends soin de sqlInjection, par l'utilisation de paramétrer des requêtes
  • comme pour mon édité réponse: vous pouvez réellement résoudre les deux problèmes d'un seul coup... juste pour dire...