2012-02-12 27 views
2

如何改變這種(ID):MAX使用SqlDataReader的C#

 using (SqlCommand myCommand = myConnection.CreateCommand()) 
     { 
      myConnection.Open(); 
      myCommand.CommandText = "SELECT FormID FROM tbl_Form"; 
      using (SqlDataReader reader = myCommand.ExecuteReader()) 
      { 
       while (reader.Read()) 
       { 
        int FormID = reader.GetInt32(reader.GetOrdinal("FormID")); 
        MessageBox.Show(FormID.ToString()); 
       } 
      } 
     } 

得到MAX(FormID)

我的自然傾向是到處亂扔FormID一個MAX,但我發現了一個IndexOutOfRange例外。

回答

13

當您選擇了最大的ID,你不應該使用SqlDataReader - 查詢只返回一個項目,默認情況下是無名所以現有查詢休息,因爲它需要一個名爲「FormID」的結果 - 雖然你可以有「固定」您的查詢使用"SELECT MAX(FormID) as FormId FROM tbl_Form"。而是使用ExecuteScalar()

myCommand.CommandText = "SELECT MAX(FormID) FROM tbl_Form"; 
int maxId = Convert.ToInt32(myCommand.ExecuteScalar()); 
+0

是啊是做了一起招。謝謝。 – 2012-02-12 00:12:37

1

這已經有一段時間,因爲我用的數據庫訪問這種風格,但我認爲你只需要

select max(FormID) from tbl_Form 

一起的ExecuteScalar調用