我正在使用查询从SQL数据库中提取数据,有时使用最后一个下拉菜单来获取我正在查找的记录有一个单引号,当它出现时以下错误:'s'附近语法不正确。字符串后闭合的引号's'附近的语法不正确。在字符串后面未使用引号
这是我的代码:
Using objcommand As New SqlCommand("", G3SqlConnection)
Dim DS01 As String = DDLDS01.SelectedItem.Text
Dim State As String = DDLState.SelectedItem.Text
Dim Council As String = DDLCouncil.SelectedItem.Text
Dim Local As String = DDLLocal.SelectedItem.Text
Dim objParam As SqlParameter
Dim objDataReader As SqlDataReader
Dim strSelect As String = "SELECT * " & _
"FROM ConstitutionsDAT " & _
"WHERE DS01 = '" & DS01 & "' AND STATE = '" & State & "' AND COUNCIL = '" & Council & "' AND LOCAL = '" & Local & "' AND JURISDICTION = '" & DDLJurisdiction.SelectedItem.Text & "' "
strSelect.ToString.Replace("'", "''")
objcommand.CommandType = CommandType.Text
objcommand.CommandText = strSelect
Try
objDataReader = objcommand.ExecuteReader
DDLJurisdiction.Items.Add("")
While objDataReader.Read()
If Not IsDBNull(objDataReader("SUBUNIT")) Then
txtSubUnit.Text = (objDataReader("SUBUNIT"))
End If
If Not IsDBNull(objDataReader("DS02")) Then
lblDS02.Text = (objDataReader("DS02"))
End If
If Not IsDBNull(objDataReader("LEGISLATIVE_DISTRICT")) Then
txtALD.Text = (objDataReader("LEGISLATIVE_DISTRICT"))
End If
If Not IsDBNull(objDataReader("REGION")) Then
txtRegion.Text = (objDataReader("REGION"))
End If
If DDLState.SelectedItem.Text <> "OTHER" Then
If Not IsDBNull(objDataReader("UNIT_CODE")) Then
txtUnitCode.Text = (objDataReader("UNIT_CODE"))
End If
End If
End While
objDataReader.Close()
Catch objError As Exception
OutError.Text = "Error: " & objError.Message & objError.Source
Exit Sub
End Try
End Using
并非所有的记录都包含一个单引号,只有一些,所以我需要的东西,将工作,如果一个单引号是是否存在。 谢谢。
我觉得甚至告诉别人如何通过转义字符“修复”的查询是像有人向你走来,说:“我有一个头痛的问题。我正在寻找锤子打击我的头骨,你看到了吗?“ “哦,是的,它就在那边。”而不是只是说:“不!停!获得一些泰诺。” :) – aquinas 2014-08-29 17:52:16
@aquinas不够公平。但我仍然想指出如何解决他们所做的问题,然后指出有一个更好的方法,因为我想回答他们提出的问题。 – 2014-08-29 17:53:57
即使我删除替换字符串后,我收到此错误。我只是在网络上搜索答案后才将其包括在内。如果我直接进入SQL表并从记录中删除单引号,那么查询就可以正常工作,只有当文本包含's ... – user3991041 2014-08-29 18:00:29