将项目从列表框添加到访问数据库时出现字符串错误

时间:2017-07-05 12:37:57

标签: vb.net

我正在尝试将列表框中的项添加到访问数据库。但首先,我收到一条错误消息,说syntax was missing,但现在,我似乎得到了Conversion from string "" to type 'Double' is not valid ERROR。我已经研究了这个,它说这是因为可能有一个文本框空,但列表框中有很多项目,这是我不确定的。

感谢帮助,谢谢。

 Dim vari1 As String
        MyConn = New OleDbConnection
        MyConn.ConnectionString = connString
        MyConn.Open()
        Dim cmd1 As OleDbCommand = New OleDbCommand(str1, MyConn)
        Try
            For i As Integer = 0 To LstOrderItems.Items(i) - 1
                vari1 = LstOrderItems.Items.Item(i).ToString
                cmd1.CommandText = ("insert into RestaurantData ([Food Order]) VALUES(" + vari1 + ")")
                cmd1.ExecuteNonQuery()

            Next
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
        MyConn.Close()
    End If

1 个答案:

答案 0 :(得分:1)

看来这行是你的问题:

For i As Integer = 0 To LstOrderItems.Items(i) - 1

您正尝试将索引i(当前为0)的项目作为要循环的数字来读取。

我认为你打算写的是:

For i As Integer = 0 To LstOrderItems.Items.Count - 1

至于您的数据库错误,您缺少两个单引号。插入数据时,您必须使用单引号括住VALUES()内的每个值。

例如:

INSERT INTO table_name (column1, column2, column3) VALUES('column1 value', 'column2 value', 'column3 value')

因此,要修复错误,您还必须添加这些单引号:

cmd1.CommandText = ("insert into RestaurantData ([Food Order]) VALUES('" + vari1 + "')")

虽然你应该真正研究Parameterized queries(又名准备好的陈述),因为你的代码容易受到SQL Injection的攻击。<​​/ p>

有关详细信息,请参阅How do I create a parameterized SQL query? Why Should I?