【问题标题】:MAX(id) using SqlDataReader C#MAX(id) 使用 SqlDataReader C#
【发布时间】:2012-02-12 00:04:07
【问题描述】:

我该如何更改:

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

【问题讨论】:

    标签: c# sql sqldatareader


    【解决方案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());
    

    【讨论】:

    • 对我来说绝对是最简单的解决方案。谢谢!
    【解决方案2】:

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

    select max(FormID) from tbl_Form
    

    连同对 ExecuteScalar 的调用

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-10-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-01
      • 2019-02-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多