我有以下代码:
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
但我收到以下错误,而且我不知道如何修复它。我认为这是因为我的代码。
这就是我得到的:
答案 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