2

我正在尝试从我的数据库表中检索最新数据。我正在使用 max(columnName) 但没有我喜欢的结果。我不断得到列名而不是任何值

请帮我解决这个...

检索最大值的代码是这样的

            dbConnection dbCon = new dbConnection();
            con = dbCon.doConnection();

            SqlCommand cmd = new SqlCommand();


            String query = "select max(studentNo) from studentInfo;";
            cmd.Connection = con;
            cmd.CommandText = query;
            SqlDataReader reader = cmd.ExecuteReader();
            while (reader.Read())
            { 
                String x=reader["studentNo"].ToString();

            }

这里的 studentNo 是我需要提取其值的列名,它是 int 类型,在我的应用程序上打印字符串 x 时,我得到 studentNo 而不是值。现在我没有解决问题的线索,因为我找不到代码有什么问题。帮我做这个

4

4 回答 4

3

问题在于您访问值的方式,您可以在此处更改两件事。通过索引访问阅读器或在查询中适当地命名列。

select max(studentNo) as StudentNo from studentInfo;
于 2012-05-28T08:26:04.623 回答
3

您的查询输出一行和一列数据,因此您可以考虑使用ExecuteScalar()而不是ExecuteReader()

dbConnection dbCon = new dbConnection();
con = dbCon.doConnection();

SqlCommand cmd = new SqlCommand();


String query = "select max(studentNo) from studentInfo;";
cmd.Connection = con;
cmd.CommandText = query;
String x = cmd.ExecuteScalar().ToString();
于 2012-05-28T08:48:23.113 回答
1

应用聚合函数后,您需要为您的选择提供别名

即从 studentInfo 中选择 max(studentNo) 为 NO

并在阅读时

字符串 x=reader["NO"].ToString();

于 2012-05-28T08:34:51.430 回答
0

首先,您需要为列设置正确的别名:

select max(studentNo) as 'studentNo' from studentInfo;

其次,您可能希望将数据库分配给表:

select max(studentNo) as studentNo from databaseName..studentInfo;
于 2012-05-28T08:32:15.513 回答