我有一个带有制造商组合框的表格<<你选择一个导致>> 第二个组合框(cbModel)为你选择一个模型的模型然后你去第一个文本框(txtColour)输入汽车ccolour然后到文本框(txtRegNo)进入注册。按添加车辆按钮并获取此
Private Sub CreateVehicle()
'Read in the model name and change it to a modelID no
Dim ticket As String = cbModel.Text
Dim queryString As String = "Select ModelID FROM Model WHERE Modelname = " & ticket & "' "
' Run Query
SQL.RunQuery(queryString)
Dim da As New SqlClient.SqlDataAdapter()
Dim dt = New DataTable
da.Fill(dt)
'show what is in dt is now
MsgBox(dt)
'temporary break to get first part working
Exit Sub
If Len(cbModel.Text) >= 0 And Len(txtColour.Text) >= 0 And Len(txtRegNo.Text) >= 0 Then
'Add new user to database
SQL.AddVehicle(cbModel.Text, txtColour.Text, txtRegNo.Text)
Else
MsgBox("Please make sure you have filled in ALL Fields Correctly!")
Exit Sub
End If
End Sub
所以我摆弄了Dim querysString行,但是我无法让它工作,我得到的只是错误消息“字符串''后面的未闭合引号。然后InvalidOperation Exception未处理(这我认为是由于停止dt填充的第一个错误?)
任何人都可以请求帮助,因为我慢慢疯了,任务还远未完成!感谢
答案 0 :(得分:0)
我很确定ModelName是某种文本类型的字段。如果这是正确的,那么,如果要搜索该字段中的值,则需要将其放在单引号之间。例如
Dim queryString As String = "Select ModelID FROM Model " & _
"WHERE Modelname = 'ValueToSearch'"
在您的代码中,从值的开头缺少引号。所以这是一个简单的错字,阻止你的代码工作 但修改它添加引用并不是我想给你的建议。而是尝试使用参数化查询
Dim queryString As String = "Select ModelID FROM Model " & _
"WHERE Modelname = @model"
' Run Query '
Dim da As New SqlClient.SqlDataAdapter(queryString, yourConnection)
da.SelectCommand.Parameters.Add("@model", SqlDbType.NVarChar).Value = ticket
Dim dt = New DataTable
da.Fill(dt)
现在,很难说如何将此方法应用于
的方法SQL.RunQuery(queryString)
但是您应该真正更改该代码以接受参数化查询,因为它们更安全(没有Sql注入),并且不会受到由于值中存在引号而导致的简单解析错误。