0
votes

Datarow nulled in foreach

J'ai écrit une méthode pour charger des données d'un utilisateur à partir d'une DB. Mon datarow Linha est annulée, je ne peux donc pas lire ces données. Quelle est la bonne façon de lire cette ligne? XXX

VisualStudio 2019 C #


1 commentaires

Vous ne pouvez pas tester toute la ligne contre Dbnull. Vous devez tester les champs individuels. Il y a un < i> datarow.isnull (nom de terrain)


5 Réponses :


0
votes

au lieu de linha ["m.crm"] Essayez d'utiliser linha ["CRM"] .

m.crm utilisé dans l'instruction SQL ne fait que partie de la commande SQL Select exécutée dans SQL Server, et le résultat de cette sélection (le jeu de données) contient CRM Sans l'alias de table m. comme nom de colonne.


0 commentaires

0
votes

Vous devez passer de xxx

à xxx

car comme Steve mentionné dans les commentaires, dbnull.value doit être utilisé avec Valeurs de colonne NON ROWS


0 commentaires

0
votes

Vous avez besoin de changement dans deux endroits. 1. Changez la condition IF. Reportez-vous à DBNULL Documentation 2 . Supprimer m. des noms de champ xxx


0 commentaires

1
votes

Vous ne pouvez pas tester la ligne entière contre dbnull. Vous devez tester les champs individuels ou, au moins dans ce contexte, au moins le champ ID.

Il y a un Datarow.isnull (nom de terrain) xxx

avis que vous n'avez pas besoin du préfixe d'alias une fois que les données sont dans les lignes de données.

dit que, il y a un autre problème grave dans votre requête. Vous êtes concaténant une chaîne pour créer une commande SQL. Ceci est un problème bien connu menant aux hacks d'injection SQL et aux erreurs d'analyse. Vous devez utiliser des paramètres comme ici: xxx


0 commentaires

0
votes

Vous pouvez vérifier vos champs sur null code> et après vérification, vous pouvez créer un objet en toute sécurité:

var id = linha["id"];
var nom = linha["nome"];
var crm = linha["crm"];
var habilitado = linha["habilitado"];

if (id != null && nom != null &&  crm != null && habilitado != null) 
{
    this.Medico = new MedicoModel((int)id, nom.ToString(), 
        crm.ToString(), (bool)habilitado); 
}


0 commentaires