我正在尝试从数据库字段中找到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);
}
答案 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();