0

これが単純なものであることを願っています

データセットの列からデータを抽出しています。SQL クエリには ID が提供されるため、返される結果は 1 つだけです。したがって、この結果は常にデータセットの行 '0' にあると思います。

データグリッドの最初の結果をクリックすると........ID '0' が 2 番目のページに送信され、DB からイメージ名が抽出されてクラッシュします。グリッドで 2 番目の結果、つまり「1」を選択すると問題ありません。

これが私のコードです:

     SqlConnection sqlcon = new SqlConnection(connstring);
        SqlCommand sqlcmd = new SqlCommand("select pic from cds WHERE _id = '" + passedID + "'", sqlcon);
        SqlDataAdapter adp = new SqlDataAdapter(sqlcmd);
        DataSet ds = new DataSet();
        adp.Fill(ds);
        // Rows set to '0' for the first result in the dataset but crashes if the first item is selected.
        object a = ds.Tables[0].Rows[0]["pic"];
        string test = a.ToString();
4

2 に答える 2

2

クエリが少なくとも 1 つの行を取得したことを確認するチェックを追加します

if(ds.Tables[0].Rows.Count > 0)
{
    object a = ds.Tables[0].Rows[0]["pic"];
    string test = a.ToString();
}
else
{
    Response.Write("No rows for the ID = " + passedID);
}

データセットには行がありません。Rows プロパティを持つ Dataset に含まれる DataTable ですが、クエリが失敗した場合 (要求された ID を持つ行が見つからない場合)、Rows コレクションには要素が 0 であり、インデックス 0 にアクセスできません。(範囲外)

于 2013-03-19T16:36:41.337 に答える
0

問題は、間違った ID を渡しているかcds、渡された ID のデータがテーブルにないことだと思います。

にアクセスしようとするとRows[0]、データがないためエラーが発生し、コレクションに行がありません。

于 2013-03-19T16:38:07.913 に答える