我很难过,我试图从数据库中填充5个文本框,并非所有5个都会有数据。用ExecuteReader循环遍历行
实施例:
ID | ItemID | QType
1 | 10 | 2盒
2 | 10 | 6盒
3 | 11 | 1案例
在这个例子中,它将填充QuantityType1TxtBox与2 Boxes和QuantityType2TxtBox与6 Boxes,而其他三个文本框留空。
当我尝试运行此代码时,出现以下错误:索引超出了数组的范围。
此错误发生在此行上:QuantityType2TxtBox.Text = rdr.GetString(1);
SqlCommand cmd = new SqlCommand(@"SELECT QType FROM InventoryQType
WHERE ItemID = '" + itemID + "'", conn);
conn.Open();
SqlDataReader rdr = cmd.ExecuteReader();
while (rdr.Read())
{
QuantityType1TxtBox.Text = rdr.GetString(0);
QuantityType2TxtBox.Text = rdr.GetString(1);
QuantityType3TxtBox.Text = rdr.GetString(2);
QuantityType4TxtBox.Text = rdr.GetString(3);
QuantityType5TxtBox.Text = rdr.GetString(4);
}
rdr.Close();
您的数据中只有一个字段,所以GetString(0)之后的任何内容都不应起作用。 – LarsTech
您是否期望获得5条记录? –
另外,总是使用参数来避免sql注入。您的ItemID应该使用您传递值的参数。 – LarsTech