2017-05-31 62 views
0

我从表PatientInfo使用此代码获取最大ID撷取MAX ID引起的异常

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

,因此,没有数据被添加

+0

请添加在这个问题中使用的编程语言,我认为它是C# –

+2

使用ExectueScalar可以简化你的代码很多。 – Carra

+0

oops。是的,它的c# – SidraM

回答

4

ID是不是在你的问题涉及的领域,你有你的别名MAX

string query = "SELECT MAX(ID) AS ID FROM PatientInfo"; 
+0

可能需要max(ID)作为ID,因为表中有一个ID ... – scsimon

+1

谢谢@scsimon – hardkoded

+0

你能否也请告诉我为什么不能手动编辑表中的数据 – SidraM