Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
列表框项到ms access的第一项是重复的vb.net_Vb.net_Ms Access_Listbox - Fatal编程技术网

列表框项到ms access的第一项是重复的vb.net

列表框项到ms access的第一项是重复的vb.net,vb.net,ms-access,listbox,Vb.net,Ms Access,Listbox,我试图从一个列表框(总共19个)中获取项目,并将其传输到MS Access数据库 下面的代码 For i = 0 To Me.lstResourceTypes.Items.Count - 1 command.Parameters.AddWithValue("@ResourceType", lstResourceTypes.Items(i).ToString) MsgBox(lstResourceTypes.Items(i).ToSt

我试图从一个列表框(总共19个)中获取项目,并将其传输到MS Access数据库

下面的代码

        For i = 0 To Me.lstResourceTypes.Items.Count - 1
            command.Parameters.AddWithValue("@ResourceType", lstResourceTypes.Items(i).ToString)
            MsgBox(lstResourceTypes.Items(i).ToString)
            command.ExecuteNonQuery()
        Next
在Access表中创建19条记录,但每条记录都由列表框中的第一项填充


messagebox确实显示代码在listbox中循环,那么为什么它不在access表中反映这一点呢?

之所以会出现这种情况,是因为您在每个循环处不断向集合添加新参数。该方法不会用相同的ParameterName替换以前的参数。因此,查询只使用第一个。
您需要清除循环中的参数

    For i = 0 To Me.lstResourceTypes.Items.Count - 1
        command.Parameters.AddWithValue("@ResourceType", lstResourceTypes.Items(i).ToString)
        MsgBox(lstResourceTypes.Items(i).ToString)
        command.ExecuteNonQuery()
        command.Parameters.Clear()
    Next
但更正确的方法是在循环外部定义参数,只更改循环内部的参数值。 因此,假设该参数引用的是可以编写的字符串类型的列

    command.Parameters.Add("@ResourceType", OleDbType.VarWChar)
    For i = 0 To Me.lstResourceTypes.Items.Count - 1
        command.Parameters("@ResourceType").Value = lstResourceTypes.Items(i).ToString
        command.ExecuteNonQuery()
    Next

请注意,我使用Add而不是AddWithValue。第二种方法有很多缺点,正如这里解释的:

@svenliegeois,如果这个答案解决了你的问题,请接受它,这样每个人都知道你不再需要任何帮助。你不应该发表评论说“谢谢”。接受一个答案是所有需要和允许的感谢。