2011-07-15 83 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]);