0

希望这是一个简单的

我正在从我的数据集的列中提取数据。由于提供了 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();
4

2 回答 2

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);
}

数据集没有行。包含在 Dataset 中的 DataTable 具有 Rows 属性,但如果您的查询失败(未找到具有请求的 ID 的行),则 Rows 集合的元素为零,您无法访问索引为零。(超出范围)

于 2013-03-19T16:36:41.337 回答
0

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

当您尝试访问Rows[0]时,您会收到错误消息,因为没有数据,因此集合中没有行。

于 2013-03-19T16:38:07.913 回答