Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#位置0处没有行_C#_Sql_.net - Fatal编程技术网

C#位置0处没有行

C#位置0处没有行,c#,sql,.net,C#,Sql,.net,我再次收到错误,指出没有与SQL查询匹配的行 它说: 位置0处没有行 要点如下: firstnameTxt.Text = dt.Rows[0].ItemArray[1].ToString(); 下面是我的C代码 我不知道为什么它会这样做,因为它会诚实地返回值并在文本框中显示它。您需要用一对{}将语句括在下,否则该条件将仅应用于下一个语句;其他人将照常执行 if (dt.Rows.Count > 0) { usernameTxt.Text = dt.Rows[0].ItemArray

我再次收到错误,指出没有与SQL查询匹配的行

它说:

位置0处没有行

要点如下:

 firstnameTxt.Text = dt.Rows[0].ItemArray[1].ToString();
下面是我的C代码


我不知道为什么它会这样做,因为它会诚实地返回值并在文本框中显示它。

您需要用一对
{}
将语句括在
下,否则该条件将仅应用于下一个语句;其他人将照常执行

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();
}

如果根据条件只需要执行一条语句,则可以省略
{}
,在所有其他情况下,应将语句括在一对
{}

中,因为您忘记了将大括号添加到
if
子句中:

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 Student_Username=@StuUsername", 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;
    }
}

有一件事:只有
if(dt.Rows.Count>0)
后面的第一条语句是安全的,但是您稍后也会访问这些行。用括号括起来。但如果这是真的,你为什么会出现错误还不清楚:“因为它会诚实地返回值并在文本框中显示出来”谢谢!它总是那么小!
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 Student_Username=@StuUsername", 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;
    }
}