超出范围的数据集异常

时间:2013-03-19 16:34:00

标签: c# asp.net

希望这是一个简单的

我从我的数据集列中提取数据。由于SQL查询提供了一个ID,因此只返回一个结果。所以我认为这个结果总是在数据集的第0行。

如果我点击我的数据网格中的第一个结果........将id“0”发送到我的第二页,然后从数据库中提取图像名称它崩溃了。如果我在网格中选择第二个结果,即“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();

2 个答案:

答案 0 :(得分:2)

添加检查以确保您的查询至少检索了一行

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属性的DataTable,但如果您的查询失败(找不到具有请求ID的行),则Rows集合具有零元素,您无法访问索引零。 (超出范围)

答案 1 :(得分:0)

我会猜测问题是你传递了错误的id,或者cds表中没有传递id的数据。

当您尝试访问Rows[0]时,由于没有数据而出现错误,因此集合中没有行。