2010-05-19 5 views
1

Une colonne dans ma base de données (de type double) a des valeurs nulles. J'exécute une procédure sored pour obtenir les données dans mon applicationproblème avec la colonne null

wipDBTableAdapters.XLSFacturiTableAdapter TAFacturi = new wipDBTableAdapters.XLSFacturiTableAdapter(); 
       var dtfacturi = TAFacturi.GetData(CodProiect); 

Alors j'essaie de faire quelque chose comme ceci:

if (dtfacturi[i].CANTITATE == null) 
    { 
    //do something 
    } 

cela donne un avertissement:

The result of the expression is always 'false' since a value of type 'double' is never equal to 'null' of type 'double? 

Cependant quand je cours mon code j'obtiens l'exception suivante:

StrongTypingException 
The value for column 'CANTITATE' in table 'XLSFacturi' is DBNull. 

Comment suis-je censé résoudre ce problème?

Répondre

3

Tout en travaillant avec des données dans DB et doivent vérifier les valeurs NULL utilisent la classe DBNull au lieu de null .NET.

+0

Malheureusement, je reçois le même résultat avec DBNull, je pense que je vais ajouter une procédure stockée qui remplacera null avec 0 dans la base de données. – Iulian

0

DBNull n'est pas null

Vérifier DBNull documentation on MSDN

Essayez ce test:

if (DBNull.Value.Equals(dtfacturi[i].CANTITATE)) 
{ 
    //do something 
} 
1

Les valeurs NULL de base de données sont différentes de null, vous devez utiliser IsDBNull pour rechercher les valeurs NULL de base de données.

Edit: Mixed up VB.Net avec C#

Comparer avec DBNull.Value plutôt que le VB IsDBNull spécifique.

1

Essayez ceci:

if (dtfacturi[i].CANTITATE == DBNull.Value) 
{ 
    //do something 
} 
1

Une valeur de type 'double' est en effet jamais nulle; Si vous voulez exporter dans un tableau de doubles, vous devez avoir deux colonnes dans la base de données, l'une contenant les données et l'autre contenant un drapeau indiquant si les données sont valides ou non.

Ceci est vraiment un bogue dans votre code adaptateur de base de données à tableau; Je ne trouve pas de hits google pour XLSFacturiTableAdapter donc je ne sais pas à qui crier.

0

Lorsque vous utilisez TypedDataSets, vérifiez si coloumn est nulle cette façon ..

if (dtfacturi[i].IsCANTITATENull()) 
    { 
     //do something 
    } 

Notez également que, C# null est différent de base de données null. Le type de votre coloumn est double, ce qui est un type de valeur qui ne peut jamais être nul. Afin de vérifier si votre valeur coloumn est nulle, vous devez le comparer avec DBNull.Value.

Questions connexes