J'ai une base de données SQL Server 2008 et j'y travaille dans le backend. Je travaille sur asp.net/C#
SqlDataReader rdr = cmd.ExecuteReader();
while (rdr.Read())
{
//how do I read strings here????
}
Je sais que le lecteur a des valeurs. Ma commande SQL consiste à sélectionner une seule colonne dans une table. La colonne contient des chaînes UNIQUEMENT. Je veux lire les chaînes (lignes) dans le lecteur une par une. Comment puis-je faire cela?
Mettez le nom du début de la colonne renvoyé par la base de données où se
"ColumnName"
trouve. S'il s'agit d'une chaîne, vous pouvez utiliser.ToString()
. S'il s'agit d'un autre type, vous devez le convertir en utilisantSystem.Convert
.la source
ça fonctionnera
la source
toString()
n'est pas valide devrait être.ToString()
juste fyiPour un seul résultat:
Pour des résultats multiples:
la source
Pensé pour partager ma méthode d'aide pour ceux qui peuvent l'utiliser:
Usage:
La méthode d'assistance convertit en n'importe quelle valeur que vous aimez, si elle ne peut pas convertir ou si la valeur de la base de données est NULL, le résultat sera nul.
la source
reader.GetColumn<int>("M_ID");
En fait, j'ai compris moi-même que je pouvais faire ceci:
la source
Trim()
n'a pas été mentionné dans la question et il en est de même ici, mais pas dans les autres réponses.Je sais que c'est un peu vieux, mais si vous lisez le contenu d'un SqlDataReader dans une classe, alors ce sera très pratique. les noms de colonne du lecteur et de la classe doivent être identiques
la source
Je dirais contre l' utilisation
SqlDataReader
ici; ADO.NET a beaucoup de cas extrêmes et de complications, et d'après mon expérience, la plupart du code ADO.NET écrit manuellement est cassé d' au moins une manière (généralement subtile et contextuelle).Des outils existent pour éviter cela. Par exemple, dans le cas où vous souhaitez lire une colonne de chaînes. Dapper rend cela totalement indolore:
Dapper traite ici de tout le paramétrage, de l'exécution et du traitement des lignes - et de nombreux autres détails grungy d'ADO.NET. Le
<string>
peut être remplacé par<SomeType>
pour matérialiser des lignes entières en objets.la source
En termes simples, si votre requête renvoie nom_colonne et contient une chaîne:
la source
J'ai une fonction d'assistance comme:
puis je l'utilise pour extraire la chaîne:
la source
Je lis généralement les données par lecteur de données de cette façon. vient d'ajouter un petit exemple.
la source
Vous devez
read
database column
ici. Vous pouvez jeter un œil à l'extrait de code suivantla source