Non valide tentez de lire lorsqu'aucune donnée n'est présente dans dr
Je suis en train de créer un formulaire de connexion sur mon ASP.NET site web. Actuellement, il y a un problème. Je suis en train d'intégrer les fonctionnalités telles que l'utilisateur connecté a la previlige pour afficher uniquement à son profil. Le code sur la page de connexion est: est-ce
business.clsprofiles obj = new business.clsprofiles();
Int32 a = obj.logincheck(TextBox3.Text, TextBox4.Text);
if (a == -1)
{
Label1.Text = "Username/Password incorrect";
}
else
{
Session["cod"]= a;
Response.Redirect("profile.aspx");
}
Après la connexion, l'utilisateur est déplacé vers la page où la personne peut voir son profil une fois connecté. Session est l'obtention de la valeur correctement de l'utilisateur connecté en personne à partir de la page d'identification et de réussir à passer à la page suivante. Mais ici, sur cette page de profil, une erreur se produit et je pense qu'il y a problème quelque part dans le grid_bind()
méthode ci-dessous
public void grid_bind()
{
business.clsprofiles obj = new business.clsprofiles();
List<business.clsprofilesprp> objprp = new List<business.clsprofilesprp>();
Int32 z = Convert.ToInt32(Session["cod"]);
objprp = obj.fnd_profiles(z); //This line of code is passing an integer as required but does not get the desired result from the database
GridView1.DataSource = objprp;
GridView1.DataBind();
}
Que l'erreur dans la logique métier dit, non valide" tentative de lecture lorsque aucune donnée n'est présente dans dr"
public List<clsprofilesprp> fnd_profiles(Int32 id)
{
if (con.State == ConnectionState.Closed)
{
con.Open();
}
SqlCommand cmd = new SqlCommand("fndpro", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@id", SqlDbType.Int).Value = id;
SqlDataReader dr = cmd.ExecuteReader();
List<clsprofilesprp> obj = new List<clsprofilesprp>();
while(dr.HasRows)
{
clsprofilesprp k = new clsprofilesprp();
k.id = Convert.ToInt32(dr[0]);//Something wrong here?
k.name = dr[1].ToString();
k.password = dr[2].ToString();
k.description = dr[3].ToString();
k.created = Convert.ToDateTime(dr[4]);
k.modified = Convert.ToDateTime(dr[5]);
obj.Add(k);
}
dr.Close();
cmd.Dispose();
con.Close();
return obj;
}lesprp k = new clsprofilesprp();
k.id = Convert.ToInt32(dr[0]);//Something wrong here?
k.name = dr[1].ToString();
k.password = dr[2].ToString();
k.description = dr[3].ToString();
k.created = Convert.ToDateTime(dr[4]);
k.modified = Convert.ToDateTime(dr[5]);
obj.Add(k);
}
dr.Close();
cmd.Dispose();
con.Close();
return obj;
OriginalL'auteur Cipher | 2011-01-07
Vous devez vous connecter pour publier un commentaire.
Vous devez appeler
DataReader.Read
pour aller chercher le résultat:DataReader.Read
renvoie un booléen, donc si vous avez plus de 1 suite, vous pouvez le faire:En outre, vous essayez d'accéder à la dr de données lorsque il n'y a aucun dans cette partie du code:
OriginalL'auteur Leniel Maccaferri
Vous avez un problème avec...
Ce sera soit jamais entrée, ou va créer une boucle infinie... c'est soit obtenu aucune des lignes ou il a des lignes. Ce que je pense que tu voulais dire:
dr.Read()
boucles à l'enregistrement suivant et renvoie true ou false selon si il y a un dossier à lire ou pas. Lorsque le lecteur de données est initialisée, le premier enregistrement est pas sélectionné. Il doit être sélectionné par l'appel dedr.Read()
retourne vrai si la première ligne est trouvée, et, en effet, sera de retour jusqu'à Read() est appelée lors de la actuellement sur la dernière ligne - c'est à dire il n'y a pas plus de lignes de gauche à lire.dr.HasRows
est juste une propriété qui vous indique si le datareader contient des lignes... qui, si elle ne gardera avoir des lignes à partir d'ici jusqu'à l'éternité. Par exemple, vous pouvez utiliser cette option si vous voulais faire quelque chose dans le cas où il a des lignes et quelque chose d'autre dans le cas où il n'est pas:OriginalL'auteur BenAlabaster
Vous essayez d'accéder à une ligne dans le datareader si il n'ya pas de lignes. j'.e
si le docteur ne rentre pas dans la boucle while alors il n'y a pas de lignes dans le datareader, cependant, vous êtes encore l'accès aux champs où vous avez un commentaire "//quelque Chose de mal ici? ".
OriginalL'auteur Chandu