Как использовать набор данных с агрегатной функцией в asp.net c # - PullRequest
2 голосов
/ 15 июля 2011

Я должен найти максимальное значение одной таблицы, используя набор данных.
Я написал код для этого следующим образом:

    DataSet ds = new DataSet();
    SqlDataAdapter da = new SqlDataAdapter("select max(FlightBookingID) from dbo.FlightBookingDetails", FlyCon);
    da.Fill(ds);
    if (ds != null)
    {
      Session["FBookingID"] = Convert.ToString(ds.Tables[0].Rows[0]["FlightBookingID"]);
    }

Но ошибка его получения в

Convert.ToString(ds.Tables[0].Rows[0]["FlightBookingID"]);

Какие изменения я должен сделать в приведенном выше коде?

Ответы [ 4 ]

2 голосов
/ 15 июля 2011

Почему вы не можете использовать SqlCommand.ExecuteScalar?

using (SqlCommand comm = new SqlCommand("select max(FlightBookingID) from dbo.FlightBookingDetails", FlyCon))
{
    var result = comm.ExecuteScalar();
    if (!Convert.IsDBNull(result))
        Session["FBookingID"] = result;
}

DataSet - очень сложный класс, и вы не должны создавать его простополучить одно значение из базы данных.

1 голос
/ 15 июля 2011

Попробуйте это.

Session["FBookingID"] = ds.Tables[0].Rows[0]["FlightBookingID"].ToString();
1 голос
/ 15 июля 2011
ds.Tables[0].Rows[0].Item["FlightBookingID"].toString();

Вы получаете String прямо здесь

0 голосов
/ 15 июля 2011

Я думаю, что вы должны использовать псевдоним в своем запросе:

 SqlDataAdapter da = new SqlDataAdapter("select max(FlightBookingID) as FlightBookingID from dbo.FlightBookingDetails", FlyCon)

, чтобы вы могли получить доступ к столбцу по имени.В противном случае вы можете получить к нему доступ по индексу столбца:

Session["FBookingID"] = Convert.ToString(ds.Tables[0].Rows[0][0]);
...