从SQL Server数据库中获取MAX id会导致异常

时间:2017-05-31 14:11:16

标签: c# sql-server exception reader

我使用以下代码从表ID获取最大PatientInfo

private void LoadID()
{
    string query = "SELECT MAX(ID) FROM PatientInfo";

    using (SqlConnection cn = new SqlConnection(constr))
    using (SqlCommand cmd = new SqlCommand(query, cn))
    {
        cn.Open();

        SqlDataReader reader = cmd.ExecuteReader();

        if (reader.HasRows)
        {
            while (reader.Read())
            {
                txtid.Text = reader["ID"].ToString();
            }
        }
        else
        {
            // other code
        }

        reader.Close();
        cn.Close();
    }
}

因为我必须首先检查是否存在任何记录,所以我使用reader.HasRows。之后,代码应获取ID并将其放入文本框。但事实并非如此。它投了IndexOutOfRangeException。我无法弄明白为什么。

在我的数据库中,我插入了一条记录。但它仍然在两个条件下给出相同的结果(1.当我在表中没有数据时和2.当我在表中有数据时)

其次,我试图在表格中手动输入数据,但它什么也没做,并且说了以下内容

enter image description here

因此,没有添加数据

1 个答案:

答案 0 :(得分:5)

ID不是您查询中的字段,您必须为MAX

添加别名
string query = "SELECT MAX(ID) AS ID FROM PatientInfo";