在sql查询中使用组合框的内容

时间:2016-05-01 19:08:23

标签: sql vb.net variables

我有一个带有制造商组合框的表格<<你选择一个导致>> 第二个组合框(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填充的第一个错误?)

任何人都可以请求帮助,因为我慢慢疯了,任务还远未完成!感谢

1 个答案:

答案 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注入),并且不会受到由于值中存在引号而导致的简单解析错误。