打印从数据库获得的最大值时出现问题

时间:2011-03-14 06:02:56

标签: c# asp.net max sql

我正在尝试从数据库字段中找到MAX编号,如果我在SQL Enterprise Manager中运行它,则下面的查询返回最大值,但我无法在numbwe中打印该值。请帮我打印从数据库中获得的MAX值。

    SqlConnection MyConnection = new SqlConnection("Data Source=localhost;Initial Catalog=hcgoa;User Id=sa;Password=;");
    SqlCommand MyCmd = new SqlCommand("SELECT MAX([no]) AS Expr1 FROM jmain", MyConnection);
    MyConnection.Open();
    SqlDataReader myReader = MyCmd.ExecuteReader();

    if (myReader.Read())

    {
        string numbwe = myReader["no"].ToString();
        Response.Write("Max no. is : " + numbwe); 
    }

4 个答案:

答案 0 :(得分:2)

您需要使用Expr1作为密钥,而不是no

那是因为你在做:

SqlCommand MyCmd = new SqlCommand("SELECT MAX([no]) AS Expr1 ...

(请注意AS子句),因此该列名为Expr1。因此:

string numbwe = myReader["Expr1"].ToString();

应该这样做。

虽然对于那些追随你的人来说,Expr1并不是一个非常具有描述性的标识符。考虑将其更改为MaxNum(当然在select和密钥中)的可能性。

答案 1 :(得分:1)

应为string numbwe = myReader["Expr1"].ToString();

在sql语句Expr1

中指定列名
SELECT MAX([no]) AS Expr1

答案 2 :(得分:1)

如果要返回单个值,则应该查看ExecuteScalar()

  

MSDN:使用ExecuteScalar方法   检索单个值(例如,   来自数据库的聚合值)。   这比使用更少的代码   ExecuteReader方法,然后   执行你的操作   需要生成单个值   使用a返回的数据   SqlDataReader的。

答案 3 :(得分:1)

您正在尝试打印查询结果中不存在的列的值。您的查询返回名为Expr1的列,而不是名为“no”的列

更改

string numbwe = myReader["no"].ToString(); 

string numbwe = myReader["Expr1"].ToString();