c# - Tentative non valide de lecture en l'absence de données




3 Answers

Vous devez appeler DataReader.Read pour récupérer le résultat:

SqlDataReader dr = cmd10.ExecuteReader();
if (dr.Read()) 
{
    // read data for first record here
}

DataReader.Read() renvoie un bool indiquant s'il y a plus de blocs de données à lire, donc si vous avez plus d'un résultat, vous pouvez faire:

while (dr.Read()) 
{
    // read data for each record here
}
    private void button1_Click(object sender, EventArgs e)
    {
        string name;
        name = textBox5.Text;
        SqlConnection con10 = new SqlConnection("con strn");
        SqlCommand cmd10 = new SqlCommand("select * from sumant where [email protected]");
        cmd10.Parameters.AddWithValue("@name",name);
        cmd10.Connection = con10;
        cmd10.Connection.Open();//line 7
        SqlDataReader dr = cmd10.ExecuteReader();
    }

    if ( textBox2.Text == dr[2].ToString())
    {
        //do something;
    }

Quand je débogue jusqu'à la ligne 7, c'est ok mais après cela dr lance une exception: Invalid attempt to read when no data is present. Ce n'est pas possible car j'ai des données dans le tableau avec nom d'utilisateur = sumant. S'il vous plaît dites-moi si la déclaration 'if' est correcte ou non .........

Et comment puis-je supprimer l'erreur ??




Je vérifierais pour voir si le SqlDataReader a les lignes retournées d'abord:

SqlDataReader dr = cmd10.ExecuteReader();
if (dr.HasRows)
{
   ...
}



J'ai utilisé le code ci-dessous et cela a fonctionné pour moi.

String email="";
    SqlDataReader reader=cmd.ExecuteReader();
    if(reader.Read()){
        email=reader["Email"].ToString();
    }

String To=email;



Related


Tags

c#   ado.net