C# C为循环。索引超出了界限
我得到以下错误: 索引超出了数组的边界 for循环代码:C# C为循环。索引超出了界限,c#,C#,我得到以下错误: 索引超出了数组的边界 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("@Req
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();
}
请帮忙!我是编程新手。改变
for (int i = 0; i < listEquipment.Items.Count - 1; i++)
for(int i=0;i
到
for(int i=0;i
循环所有项目,然后在列表设备中访问该索引。选择编辑项[i]
。但可能没有选择所有项目,这意味着此集合较小,您无法访问它
因此,我假设您不想循环所有项目,只想循环选定的项目,因此请使用:
for (int i = 0; i < listEquipment.SelectedItems.Count; i++)
{
}
for(int i=0;i
您正在寻找类似的内容(让我通过下面代码中的注释进行解释):
//完成:使sql可读
字符串sql=
@“插入[dbo]。[EquipmentItems](
[请求ID],
[类型ID])
价值观(
@请求ID,
@类型ID)”;
//创建命令一次-使用多个(在循环中)
//完成:将IDisposable包装为使用
使用(SqlCommand cmd=newsqlcommand(sql,conn)){
//所有设备的用户请求相同
Add(“@RequestID”,SqlDbType.Int).Value=userRequest;
cmd.Parameters.Add(“@TypeID”,SqlDbType.Int);
//完成:foreach+of type在上下文中的可读性要高得多:
//“为每个选定设备执行查询”
foreach(listEquipment.SelectedItems.OfType()中的设备){
cmd.Parameters[“@TypeID”].Value=equipment.equipmentID;
cmd.ExecuteNonQuery();
}
}
listEquipment.Items.Count
=listEquipment.SelectedItems.Count
你能不能把你的物品显示在listEquipment里面?另外,我想你想循环所有物品,所以使用i
谢谢。我已经做了改变
for (int i = 0; i < listEquipment.SelectedItems.Count; 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();
}
}