Проблема при печати максимального значения, полученного из базы данных - PullRequest
0 голосов
/ 14 марта 2011

Я пытаюсь найти номер 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 ]

2 голосов
/ 14 марта 2011

Вам нужно использовать Expr1 в качестве ключа, а не no.

Это потому, что вы делаете:

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

(обратите внимание на предложение AS), такстолбец называется Expr1.Следовательно:

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

должен это сделать.

Хотя, по справедливости по отношению к тем, кто идет за вами, Expr1 не очень описательный идентификатор.Рассмотрим возможность его изменения на что-то вроде MaxNum (и в select, и в ключе, конечно).

1 голос
/ 14 марта 2011

Вы пытаетесь напечатать значение столбца, который не существует в результате запроса.Ваш запрос возвращает столбец с именем Expr1, а не столбец с именем "нет"

Изменить

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

на

string numbwe = myReader["Expr1"].ToString(); 
1 голос
/ 14 марта 2011

Вам следует взглянуть на ExecuteScalar () вместо того, чтобы возвращать одно значение.

MSDN: используйте метод ExecuteScalar для получить одно значение (например, совокупное значение) из базы данных. Это требует меньше кода, чем при использовании Метод ExecuteReader, а затем выполнение операций, которые вы нужно сгенерировать одно значение используя данные, возвращаемые SqlDataReader.

1 голос
/ 14 марта 2011

должно быть string numbwe = myReader["Expr1"].ToString();

когда вы указываете имя столбца в SQL-выражении Expr1

SELECT MAX([no]) AS Expr1
...