[英]C# for loop. Index was outside the bounds
我收到以下錯誤:
指數數組的邊界之外
for循環代碼:
for (int i = 0; i < listEquipment.Items.Count - 1; i++)
{
SqlCommand cmd = new SqlCommand("INSERT INTO [dbo].[EquipmentItems] ([RequestID], [TypeID]) VALUES (@RequestID, @TypeID)", conn);
cmd.Parameters.Add("@RequestID", SqlDbType.Int).Value = userRequest;
cmd.Parameters.Add("@TypeID", SqlDbType.Int).Value = (listEquipment.SelectedItems[i] as Equipment).equipmentID;
cmd.ExecuteNonQuery();
}
出現錯誤的行:
cmd.Parameters.Add("@TypeID", SqlDbType.Int).Value = (listEquipment.SelectedItems[i] as Equipment).equipmentID;
請幫忙! 我是編程新手。
您循環所有項目,然后在listEquipment.SelectedItems[i]
訪問該索引。 但是可能沒有選擇所有項目,這意味着此集合較小,您無法訪問它。
因此,我假設您不想循環所有項目,而只循環選定的項目,因此請使用:
for (int i = 0; i < listEquipment.SelectedItems.Count; i++)
{
}
更改
for (int i = 0; i < listEquipment.Items.Count - 1; i++)
至
for (int i = 0; i < listEquipment.SelectedItems.Count; i++)
您正在尋找這樣的東西(讓我通過以下代碼中的注釋失效):
//DONE: make sql readable
string sql =
@"INSERT INTO [dbo].[EquipmentItems] (
[RequestID],
[TypeID])
VALUES (
@RequestID,
@TypeID)";
// Create command once - use many (within the loop)
//DONE: wrap IDisposable into using
using (SqlCommand cmd = new SqlCommand(sql, conn)) {
// user request is the same for all the equipment
cmd.Parameters.Add("@RequestID", SqlDbType.Int).Value = userRequest;
cmd.Parameters.Add("@TypeID", SqlDbType.Int);
//DONE: foreach + OfType<> is by far more readable in the context:
// "for each selected equipment execute a query"
foreach (Equipment equipment in listEquipment.SelectedItems.OfType<Equipment>()) {
cmd.Parameters["@TypeID"].Value = equipment.equipmentID;
cmd.ExecuteNonQuery();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.