数据集超出范围异常

本文关键字:异常 范围 数据集 | 更新日期: 2023-09-27 18:04:47

希望这是一个简单的

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

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

数据集超出范围异常

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

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

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

当您尝试访问Rows[0]时,您会得到一个错误,因为没有数据,所以集合中没有行