希望这是一个简单的
我从我的数据集列中提取数据。由于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();
答案 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]
时,由于没有数据而出现错误,因此集合中没有行。