2016-04-29 6 views
2

Ich bekomme den Fehler noch einmal, dass es keine Zeile gibt, die der SQL-Abfrage entspricht.C# Es gibt keine Zeile an Position 0

Darin heißt es:

Es gibt keine Zeile an Position 0.

Die Punkte, an:

firstnameTxt.Text = dt.Rows[0].ItemArray[1].ToString(); 

Die folgende mein C# -Code ist.

protected void Page_Load(object sender, EventArgs e) 
    { 
     if (Session["New"] != null) 
     { 
      redPnl.Visible = false; 
      UserNameSess.Text += Session["New"].ToString(); 

      SqlConnection con = new SqlConnection(@"Data Source=(LocalDB)\v11.0; AttachDbFilename=C:\Users\Donald\Documents\Visual Studio 2013\Projects\DesktopApplication\DesktopApplication\Student_CB.mdf ;Integrated Security=True"); 
      con.Open(); 

      SqlDataAdapter sda = new SqlDataAdapter("Select Student_Username, Student_FName, Student_SName, Student_Email FROM Student Where [email protected]", con); 
      sda.SelectCommand.Parameters.Add("@StuUsername", SqlDbType.VarChar).Value = UserNameSess.Text; 
      DataTable dt = new DataTable(); 
      sda.Fill(dt); 
      if (dt.Rows.Count > 0) 

      usernameTxt.Text = dt.Rows[0].ItemArray[0].ToString(); 
      firstnameTxt.Text = dt.Rows[0].ItemArray[1].ToString(); 
      surnameTxt.Text = dt.Rows[0].ItemArray[2].ToString(); 
      emailTxt.Text = dt.Rows[0].ItemArray[3].ToString(); 
      dt.Clear(); 

     } 
     else 
     { 
      redPnl.Visible = true; 
     } 



    } 

Ich habe keine Ahnung, warum es so tut, wie es ehrlich den Wert zurückbringt und es in der Textbox zeigt.

+2

Eine Sache: später auch nur die erste Anweisung nach dem 'if (dt.Rows.Count> 0)' wird sicher sein, aber Sie die Zeilen zugreifen. Umgeben Sie es in Klammern. Aber es ist nicht klar, warum Sie den Fehler erhalten, wenn das wahr ist: _ "als es ehrlich bringt den Wert zurück und zeigt es in der Textbox" _ –

Antwort

5

Sie umschließen sollten vergessen die geschweiften Klammern auf Ihre if Klausel hinzuzufügen:

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (Session["New"] != null) 
    { 
     redPnl.Visible = false; 
     UserNameSess.Text += Session["New"].ToString(); 

     SqlConnection con = new SqlConnection(@"Data Source=(LocalDB)\v11.0; AttachDbFilename=C:\Users\Donald\Documents\Visual Studio 2013\Projects\DesktopApplication\DesktopApplication\Student_CB.mdf ;Integrated Security=True"); 
     con.Open(); 

     SqlDataAdapter sda = new SqlDataAdapter("Select Student_Username, Student_FName, Student_SName, Student_Email FROM Student Where [email protected]", con); 
     sda.SelectCommand.Parameters.Add("@StuUsername", SqlDbType.VarChar).Value = UserNameSess.Text; 
     DataTable dt = new DataTable(); 
     sda.Fill(dt); 
     if (dt.Rows.Count > 0) 
     { 
      usernameTxt.Text = dt.Rows[0].ItemArray[0].ToString(); 
      firstnameTxt.Text = dt.Rows[0].ItemArray[1].ToString(); 
      surnameTxt.Text = dt.Rows[0].ItemArray[2].ToString(); 
      emailTxt.Text = dt.Rows[0].ItemArray[3].ToString(); 
      dt.Clear(); 
     } 
    } 
    else 
    { 
     redPnl.Visible = true; 
    } 
} 
+0

Danke! Es ist immer etwas so Kleines! –

+1

Gern geschehen :) – Pikoh

3

Sie müssen die Anweisungen unter der if mit einem Paar {} beilegen, ansonsten wird die Bedingung nur auf die nächste nächste Anweisung angewendet; andere werden ausführen wie gewohnt

if (dt.Rows.Count > 0) 
{ 
    usernameTxt.Text = dt.Rows[0].ItemArray[0].ToString(); 
    firstnameTxt.Text = dt.Rows[0].ItemArray[1].ToString(); 
    surnameTxt.Text = dt.Rows[0].ItemArray[2].ToString(); 
    emailTxt.Text = dt.Rows[0].ItemArray[3].ToString(); 
} 

Sie die {} weglassen kann, wenn es nur eine Anweisung erforderlich ist, basierend auf dem Zustand, in allen anderen Fällen führen Sie die Anweisungen innerhalb des Paares von {}

Verwandte Themen