2011-07-15 140 views
2

我必須使用數據集找到一個表的最大值。
我寫的代碼爲如下:如何在asp.net中使用數據集與聚合函數c#

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"]); 
    } 

​​

我應該在上面的代碼做哪些改變其葛亭錯誤?

+0

什麼是錯誤? – Oded

回答

2

爲什麼不能使用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是非常複雜的類,你不應該創建它只是從數據庫中獲取一個值。

+2

我認爲這是最好的解決方案。我只是添加這樣的事實,這可能會返回一個煩人的DBNull.Value而不是null當沒有數據存在。在這種情況下,我認爲,在應用程序上使用它之前,將DBNull轉換爲null會更好。 – ClayKaboom

+0

@ClayKaboom更新了問題。謝謝! – VMAtm

+0

是的,但他在這個問題上寫道:「我必須使用數據集找到最大值。」 ... – 2GDev

1
ds.Tables[0].Rows[0].Item["FlightBookingID"].toString(); 

您直接及彼字符串

1

試試這個。

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

我用這個只給它錯誤 – riya

+1

你有沒有給過.ToString()結束? –

0

我想你應該在你的查詢中使用別名:

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

,所以你可以通過名稱存取權限列。否則,您可以按列索引訪問它:

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