我正在尝试将列表框中的项添加到访问数据库。但首先,我收到一条错误消息,说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
答案 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?。