2011-07-15 16 views
2

データセットを使用して1つのテーブルの最大値を見つける必要があります。次のように
私はそのためのコードを書かれている: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"]); 
    } 

しかし

、私は上記のコードで何をすべき変化 ​​

でそのgetingエラー?

+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非常に複雑なクラスで、あなただけのデータベースから一つの値を取得するには、それを作成しないでください。

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

をので、あなたが名前で列をアクセスもできます。

+2

これは最善の解決策だと思います。私はちょうど、データが存在しないときにnullの代わりに厄介なDBNull.Valueを返すかもしれないという事実を追加したいと思います。この場合は、アプリケーションで使用する前にDBNullをnullに変換する方が良いと思います。 – ClayKaboom

+0

@ClayKaboom質問を更新しました。ありがとう! – VMAtm

+0

ええ、彼は質問に「データセットを使用して1つのテーブルの最大値を見つけなければならない」と書いています。 .... – 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

は、私はあなたがあなたのクエリにエイリアスが使用すべきだと思います。それ以外の場合は、列インデックスでアクセスできます。

Session["FBookingID"] = Convert.ToString(ds.Tables[0].Rows[0][0]); 
関連する問題