如何在一行中的MS Access数据库中插入列表框项目

时间:2018-02-06 11:30:41

标签: vb.net visual-studio visual-studio-2013

我有以下代码:

 Try
    Dim queryString As String
    queryString = "Insert into ServiceRecords([Personnel]) Values(@Personnels)"
    command1 = New OleDbCommand(queryString, connection)

    For i As Integer = 0 To Me.ListBox1.Items.Count + 1
        command1.Parameters.AddWithValue("Personnels", ListBox1.Items(i))
        command1.Parameters.Clear()
        command1.ExecuteNonQuery()
    Next
Catch ex As Exception

End Try

但我收到以下错误,而且我不知道如何修复它。我认为这是因为我的代码。

error

这就是我得到的:

result

1 个答案:

答案 0 :(得分:0)

让我们回顾一下。

首先,正如muffi建议的那样,使用Add方法而不是.AddWithValue,而不是DBType使用OLEDBType。 OleDBType中没有.String类型。您必须检查Access数据库以获取正确的数据类型。可能是VarChar。此外,参数名称应与查询字符串中的参数名称匹配。使用Access,位置是重要的,但对于其他数据库,名称很重要。

其次,正如Charles建议的那样,将加1更改为-1。大多数人开始计数为1,但计算机通常从零开始,因此ListBox的上部索引比Count少一个(记住你从0开始不是一个)。

第三,正如Charles所指出的,在执行之前清除参数是错误的。然后你的参数中没有任何东西。根本没有必要清除它们,因为你在循环的每次迭代中都覆盖了Value属性,并且我在循环外部设置了名称和数据类型,因为它们保持不变。我们不希望在每次迭代发生变化时重置属性。

command1.Parameters.Add("@Personnels", OleDbType.VarChar)
For i As Integer = 0 To ListBox1.Count -1
    command1.Parameters("@Personnels").Value = ListBox1.Items(i)
    command1.ExecuteNonQuery
Next