SqlDataReader Obtenir La Valeur Par Nom De Colonne (Pas De Nombre Ordinal)
À l'aide de la les méthodes de la SqlDataReader, je peux récupérer la valeur d'une colonne en passant c'est ordinale, tels que la valeur de la première colonne si je passe dans read.GetValue(0)
, ou la deuxième colonne si je passe dans read.GetValue(1)
.
En regardant les méthodes, je ne vois pas d'option pour obtenir la valeur d'une colonne en lui passant le nom d'une colonne, comme ColumnID. Dans mon mythique exemple, je voudrais passer en read.GetValueofColumn("ColumnID")
et de lire la valeur dans la colonne (noter que la méthode GetValueofColumn
n'existe pas pour autant que je peux dire à partir de la liste des méthodes de).
Me manque la méthode pour ce faire, ou une façon de le faire?
J'ai essayé et malheureusement
GetValue
accepte uniquement un int
.pourquoi ne demandez-vous pas à la valeur que vous êtes à la recherche par le
dataReader["ColumnName"]
il n'est pas trivial.. voici un bon site à garder dans votre arsenal C# DataReader valeurs par Nom de ColonneOriginalL'auteur user9927 | 2015-02-04
Vous devez vous connecter pour publier un commentaire.
Vous pouvez obtenir le numéro ordinal de la colonne à l'aide de la
GetOrdinal
méthode, de sorte que votre appel pourrait être:Pour des raisons de performances, Microsoft recommande que vous appelez votre GetOrdinal à l'extérieur de votre lecture de la boucle, et appeler GetValue(int) à l'intérieur de la boucle
super réponse, cependant, l'utilisation de
read.GetFieldValue<YourType>(read.GetOrdinal("ColumnID"));
vous permettra d'économiser du castingOriginalL'auteur MatthewG
Datareader
a numérique (position de base) de la méthode, et une analyse de texte (nom du champ). Donc, avec un nom de champ, vous pouvez obtenir la valeur comme(en supposant que
reader
est undatareader
)Vrai, mais les autres fonctions d'assistance à la lecture de prendre un int, donc si vous voulez les utiliser, vous devez appeler GetOrdinal (de préférence à l'extérieur de la lecture en boucle) pour obtenir l'index, et puis vous pouvez appeler toutes les fonctions (y compris le lecteur[index]) à l'intérieur de la lire en boucle .
La question est "une option pour obtenir la valeur d'une colonne en lui passant le nom d'une colonne", et je suppose que ma réponse est le plus simple.
OriginalL'auteur Emanuele Greco
Réponse tardive, mais... Ce qui a toujours travaillé pour moi, et je pense qu'il est plus proche de ce que l'OP cherche à atteindre:
OriginalL'auteur Kirby L. Wallace
vous pouvez utiliser:
où
id
ettime
sont les noms des colonnesOriginalL'auteur Grzegorz J
Pour plus de commodité, vous pouvez ajouter certaines aides comme ceci:
Comme vous pouvez le voir c'est le lecteur qui permet d'utiliser fieldnames mais elle renvoie un objet qui a besoin d'être castée pour le bon type de données. L'extension prend en charge à la fois et ajoute une valeur par défaut lorsque le champ est null.
OriginalL'auteur Rick Glimmer