一尘不染

使用SqlDataReader C#的MAX(id)

sql

我该如何更改:

        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异常。


阅读 207

收藏
2021-03-10

共1个答案

一尘不染

当您选择最大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());
2021-03-10