1

データベースをループして、プレーヤーが関連付けられているリーグのリストを表示しています。プレーヤーがどのリーグのメンバーでもない場合、メッセージが表示されて通知されます。

ここにコードがあります

if (dReader.Read())
{          
    while (dReader.Read())
    {
        usersLeagues.Text += "<li class=\"li-myLeagues\"><a  href=\"leagueDetails.aspx?leagueID=" + (dReader["leagueID"].ToString()) + "\">" + (dReader["leagueName"].ToString()) + "</a></li>";
    }
}
else
{
    usersLeagues.Text = "You are currently not a part of any leagues";
}
dReader.Close();
conn.Close();

問題は、データ リーダーがクエリで最初のリーグを表示していないことです。

これはなぜですか?

4

2 に答える 2

10

変化する

if (dReader.Read()){  

if (dReader.HasRows){

ステートメントで を呼び出すと、Read()実際ifにはデータの最初の行が読み取られます。Read()ステートメントで再度呼び出すとwhile、最初の読み取り行がスキップされます。

プロパティを使用HasRowsして、リーダーにデータが含まれているかどうかを確認できます。

于 2013-03-16T11:25:09.110 に答える
1

if ステートメントは最初のレコードを読み取っているため、while ステートメントをヒットすると、2 番目の結果に移動します。

于 2013-03-16T11:26:55.010 に答える