C# 数据集的超出范围异常

C# 数据集的超出范围异常,c#,asp.net,C#,Asp.net,希望这是一个简单的问题 我正在从数据集的一列中提取数据。由于提供了SQL查询ID,因此只会返回一个结果。所以我认为这个结果总是在数据集的“0”行 如果单击datagrid中的第一个结果……。请将id“0”发送到我的第二个页面,然后该页面将从它崩溃的数据库中提取图像名称。如果我在网格中选择第二个结果,即“1”,则可以 这是我的密码: SqlConnection sqlcon = new SqlConnection(connstring); SqlCommand sqlcm

希望这是一个简单的问题

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

如果单击datagrid中的第一个结果……。请将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();

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

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为请求的行),那么行集合有零元素,您无法访问索引零。(超出范围)

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

当您尝试访问
行[0]
时,会出现错误,因为没有数据,所以集合中没有行