使用SqlDataReader在C#中获取MAX(id)

3
我应该怎样更改这个内容:
        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异常。

2个回答

19

选取最大的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());

绝对是我最简单的解决方案。谢谢! - Paul Karkoska

1

我已经有一段时间没有使用这种类型的数据库访问了,但我认为你只需要

select max(FormID) from tbl_Form

连同对ExecuteScalar的调用


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接