使用 SqlDataReader C# 的 MAX(id)

发布于 2025-01-04 20:59:46 字数 636 浏览 0 评论 0原文

如何更改此设置:

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

How do I change this:

        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());
                }
            }
        }

to get MAX(FormID) ?

My natural tendency is to throw a MAX around FormID but I'm getting an IndexOutOfRange exception.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

短暂陪伴 2025-01-11 20:59:46

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

When you select the maximum id you shouldn't use a SqlDataReader - the query returns just one item, which by default is unnamed so your existing query breaks because it expects a result named "FormID" - although you could have "fixed" your query by using "SELECT MAX(FormID) as FormId FROM tbl_Form". Instead use ExecuteScalar():

myCommand.CommandText = "SELECT MAX(FormID) FROM tbl_Form";
int maxId = Convert.ToInt32(myCommand.ExecuteScalar());
﹎☆浅夏丿初晴 2025-01-11 20:59:46

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

select max(FormID) from tbl_Form

调用 ExecuteScalar

It's been a while since I used this style of database access, but I think you just need

select max(FormID) from tbl_Form

along with a call to ExecuteScalar

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文