À L'Aide De Lecteur De Données MySQL
Je ne suis pas familier avec l'utilisation de Données de Lecteur, j'ai besoin d'aide avec le code suivant, je veux récupérer les données unique à partir de la base de données.
MySqlDataAdapter data = new MySqlDataAdapter(cmd);
conn.Open();
DataTable dt = new DataTable();
data.Fill(dt);
gridView1.DataSource = dt;
int retrievedValue = 0;
using (MySqlDataReader reader = cmd.ExecuteReader())
{
while (reader.Read())
{
if ((int)reader["order_status"] == 0)
{
retrievedValue = (int)reader.GetValue(0);
GridView View2 = sender as GridView;
e.Appearance.BackColor = Color.Green;
e.Appearance.BackColor2 = Color.ForestGreen;
}
}
}
Quel est le type de
Il contient des valeurs numériques 1, 2, 3, 4, 5 de ses INT
order_status
de la colonne? Aussi, vous devez utiliser ==
pour l'égalité de la vérification, =
est l'opérateur d'affectation.Il contient des valeurs numériques 1, 2, 3, 4, 5 de ses INT
OriginalL'auteur Kevin Rodriguez | 2015-04-16
Vous devez vous connecter pour publier un commentaire.
reader["order_status"]
retourneobject
, puisque vous avez dit que c'est un déjà entier, vous avez besoin de le jeter auxint
premier.Vous devez utiliser
==
de l'opérateur tant mieux, car c'est un opérateur d'égalité.=
de l'opérateur est un opérateur d'affectation.Ou vous pouvez utiliser
GetInt32
méthode avec de base zéro numéro de colonne. Disons que c'est la première colonne de votre requête retourne, vous pouvez l'utiliser comme;Par ailleurs, si vous voulez obtenir une seule valeur, je fortement pensez que vous voulez utiliser
ExecuteScalar
méthode, car elle est la première colonne de la première ligne. Ensuite, vous pouvez structurer votre requête commeSELECT order_status FROM ...
etc..Si la valeur que vous souhaitez obtenir est la première colonne de la première ligne, vous pouvez utiliser
ExecuteScalar
méthode,int value = (int)cmd.ExecuteScalar();
. Rappelez-vous, votre requête obtenir plusieurs lignes avec plusieurs colonnes. Cela ne veut pas briser ces méthodes.ExecuteScalar
méthode obtient la première colonne de la première ligne et les autres valeurs de votre commande sont ignorées.im ne pas obtenir ce droit, le code ne me laissera pas récupérer les lignes qui a une valeur de 0?
Qu'est-ce que votre
cmd
requête exactement? Vous n'aurez pas besoinExecuteReader
lorsque vous utilisezExecuteScalar
par la voie.OriginalL'auteur Soner Gönül
Veillez à attribuer à une variable avant de l'
while (reader.Read())
sinon, il sera et d'erreur. Ensuite, fermez le lecteur de données une fois que vous avez fini de l'utiliser. Comme:J'espère que c'est a vous êtes à la recherche pour.
La colonne nombre voulez-vous récupérer des données à partir de? Si vous souhaitez récupérer à partir de la première colonne, puis utilisez
retrievedValue = dr.GetValue(0)
ou à partir de la deuxième colonne,retrievedValue = dr.GetValue(1)
, etc. Notez qu'il n'utilise que 1 ligne mais vous devez spécifier la colonne que vous voulez dans dr.GetValue.Vous pouvez aussi avoir besoin de convertir des données d'un type de données telles que:
Convert.ToInt32(dr.GetValue(0));
mais pour les chaînes, vous ne le font pas:dr.GetString(0)
order_status colonne, il a une valeur allant de 1 à 6, et si la valeur d'une ligne est de 1 j'ai besoin de peindre le gridview ligne rouge, si c'est 2 besoin de le peindre avec du vert et ainsi de suite. im obtenir une erreur impossible de trouver de la colonne spécifiée dans les résultats: order_status
Pourriez-vous mettre à jour votre réponse pour inclure le nouveau code s'il vous plaît?
OriginalL'auteur Gus