Je suis assez nouveau dans C # strong> et .NET STRUT> (je suis venu de Java Ee Environment) et j'ai le doute suivant sur la façon d'utiliser Donc, fondamentalement dans mon projet, j'ai une classe où j'ai les requêtes déclarées sous forme de variables de chaîne statiques, quelque chose comme ceci: p> public static class PROT_UTENTI
{
public static string SELECT_USERS_FROM_AOO =
@"SELECT *
FROM PROT_UTENTI
WHERE [SiglaAOO] = @SiglaAOO
AND [Notifica] = @Notifica";
...............................................................
...............................................................
...............................................................
}
3 Réponses :
Votre colonne de table sera parfois nulle et vous voulez pouvoir les trouver. Votre requête doit être: p>
SELECT * FROM table WHERE NULL=NULL --returns 0 rows.
oui strong> Vous pouvez le faire, en utilisant cette technique simple:
Comme d'autres ont noté, il s'agit d'un moyen étrange de construire vos déclarations SQL. Cependant, vous pouvez le faire un peu en tournant select_users_from_aoo em> dans une méthode. Ensuite, dans le code où vous souhaitez utiliser select_users_from_aoo em> appelez la méthode avec la valeur réelle afin qu'elle puisse renvoyer la chaîne souhaitée. Exemple de résultats: P>
([notifica] = @notifica ou @notifica est null) code>?Vous avez le code du texte de la requête. Il n'est donc pas possible d'éviter la condition. Vous devez éditer cette chaîne et supprimer le "et [notifica] = @notifica" ou simplement ajouter une autre chaîne sans condition non emembare et choisissez au moment de l'exécution qu'on utilise une utilisation. Peut-être devriez-vous penser aux procédures stockées, mais une meilleure approche pourrait utiliser un ormes
Y a-t-il une raison particulière que vous utilisez ado.net vs dire dapper ou cadre d'entité?
@mjwills parce que c'est un projet hérité et la requête est faite de cette manière
Il serait génial si vous pouviez fournir un exemple de reproductible minimal , y compris comment vous exécutez
select_users_from_aoo code>.Damien_the_unbeliever mmm Je ne suis pas sûr parce que ce qui se passe-t-il, le @notifica param est null? Est-ce la recherche de l'enregistrement où le champ [notifica] est NULL?
Damien vous a fourni ce que vous avez demandé ..
Mon doute est: @notifica peut être null. Si cette valeur de paramètre est NULL, je souhaite héberger cela et la condition. Ado.net permet de le faire d'une manière ou d'une autre? Code>Votre commentaire suggère de penser que la valeur de la colonne de table peut être nulle parfois, mais si elle est, vous ne la recherchez pas à l'aide de
notifica = null code>, vous utiliseznotifica est NULL code>. Votre requête telle que écrite ne trouvera jamais (jamais) aucune ligne où la colonne NOTIFICA est NULL, car peu importe ce que vous mettez dans le paramètre (NULL, une valeur (NULL, une valeur, etc.), une ligne avec une null de NOTIFICA reviendra toujours sur cette condition de la où@Caiusjard non, ce n'est pas mon problème. Mon problème est de créer une requête qui peut sauter une condition. Le seul paramètre obligatoire est le premier, le second n'est pas obligatoire, si le deuxième paramètre est nul, ignore la seconde et la condition
Vous voulez probablement scénario 2 dans ma réponse