2012-02-12 1 views
2

を使用して:MAX(ID)どのように私はこれを変更できます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(フォームID)を取得するには?

私の自然な傾向は、FormIDの周りにMAXをスローすることですが、私はIndexOutOfRange例外を取得しています。

答えて

13

最大IDを選択すると、SqlDataReaderを使用しないでください。クエリでは、デフォルトでは名前が付けられていない項目が1つだけ返されるため、 "FormID"という名前の結果が期待されるため、 "SELECT MAX(FormID) as FormId FROM tbl_Form"を使用してクエリを修正しました。私は、データベース・アクセスのこのスタイルを使用するので

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

いやとともに

select max(FormID) from tbl_Form 

が必要だと思う。その代わりExecuteScalar()を使用トリック。ありがとうございました。 –

1

それはしばらくしているが、私はあなただけやったは、ExecuteScalarの呼び出し