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 username=@name");
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;
}
Wenn ich bis Zeile 7 Invalid attempt to read when no data is present.
debugge, ist es in Ordnung, aber danach löst dr eine Ausnahme aus:
Das ist nicht möglich, da ich Daten in der Tabelle mit dem Benutzernamen = sumant habe. Bitte sagen Sie mir, ob die 'if'-Anweisung korrekt ist oder nicht .........
Und wie entferne ich den Fehler?
dr.Read()
. Wenn die Abfrage keine Datensätze zurückgibt, ist der Fehler derselbe: "Ungültiger Leseversuch, wenn keine Daten vorhanden sind". Verwenden Sie stattdessenif(dr.Read()){....}
(oder eine Schleife wie unten).Sie müssen anrufen,
dr.Read()
bevor Sie versuchen, Daten zu lesen. Diese Methode gibt false zurück, wenn nichts zu lesen ist.quelle
Ich hatte gerade diesen Fehler, ich rief
dr.NextResult()
stattdr.Read()
.quelle
Ich würde überprüfen, ob der SqlDataReader zuerst Zeilen zurückgegeben hat:
SqlDataReader dr = cmd10.ExecuteReader(); if (dr.HasRows) { ... }
quelle
Ich habe den folgenden Code verwendet und es hat bei mir funktioniert.
String email=""; SqlDataReader reader=cmd.ExecuteReader(); if(reader.Read()){ email=reader["Email"].ToString(); } String To=email;
quelle
Ich hatte 2 Werte, die Nullwerte enthalten konnten.
while(dr.Read()) { Id = dr["Id"] as int? ?? default(int?); Alt = dr["Alt"].ToString() as string ?? default(string); Name = dr["Name"].ToString() }
Das Problem wurde behoben
quelle