我正在尝试对旧的VB Web应用程序进行一些小的更改我需要在字符串中添加引号我到目前为止没有运气.字符串是
Dim sql As String = "Select * from Usertask Where UserId = " & Session("UserId") & " and JobID=" & ddlReqTask.SelectedValue
Run Code Online (Sandbox Code Playgroud)
我需要在Session("UserID")值周围添加引号.
ili*_*ian 31
您可以使用""将引号插入字符串,例如:
dim sometext as String = "Hello ""Frank"" how are you?"
哪个给你
你好"弗兰克"你好吗?
Kev*_*evB 12
要逃避报价,您只需要添加另一个报价,我相信这就是您所需要的:
Dim sql As String = "Select * from Usertask Where UserId = """ & Session("UserId") & """ and JobID=" & ddlReqTask.SelectedValue
Run Code Online (Sandbox Code Playgroud)
我建议您使用参数化SQL而不是像这样构建一个adhoc SQL语句,因为您可以让自己开放SQL注入.这意味着你不必担心行情串联成线,以及还提高了查询性能(假设SQL Server)的,因为它允许执行计划的缓存和重用.
例如
Dim sql As String = "Select * from Usertask Where UserId = ? AND JobID = ?"
Run Code Online (Sandbox Code Playgroud)
然后将2个ADODB.Parameters添加到Command对象,以提供2个参数的值,例如
Set param = New ADODB.Parameter
param.Name = "@UserId"
param.Direction = adParamInput
param.Type = adVarChar
param.Size = (give size of user id field)
param.value = Session("UserId")
yourADOCommand.Parameters.Append param
Run Code Online (Sandbox Code Playgroud)
对于JobId参数也是如此.
这是一个SQL注入漏洞,您不应该这样做.通过这种方式,您允许用户通过为您提供UserId来执行他们想要的任何查询
'; DROP TABLE Usertask; --
Run Code Online (Sandbox Code Playgroud)
相反,使用参数.根据您执行SQL的方式,有不同的方法可以执行; 请告诉我们执行SQL查询的代码.
在回答你的问题时,
Dim StringWithQuotes As String = "Hello, I've got ""Quotes""!"
Run Code Online (Sandbox Code Playgroud)
这个字符串将是
你好,我有"行情"!