我试图做一些小的修改,以一个老VB web应用程序,我需要添加一个字符串,我没有运气迄今引号内。 该字符串是
Dim sql As String = "Select * from Usertask Where UserId = " & Session("UserId") & " and JobID=" & ddlReqTask.SelectedValue
我需要添加围绕会议(“用户名”)值引号。
我试图做一些小的修改,以一个老VB web应用程序,我需要添加一个字符串,我没有运气迄今引号内。 该字符串是
Dim sql As String = "Select * from Usertask Where UserId = " & Session("UserId") & " and JobID=" & ddlReqTask.SelectedValue
我需要添加围绕会议(“用户名”)值引号。
你可以用""
来插入报价为一个字符串如:
dim sometext as String = "Hello ""Frank"" how are you?"
它给你
你好“弗兰克”你怎么样?
为了逃避,你只需要添加一个报价报价,我相信这是你所需要的:
Dim sql As String = "Select * from Usertask Where UserId = """ & Session("UserId") & """ and JobID=" & ddlReqTask.SelectedValue
我建议你使用参数化的SQL,而不是建立一个即席SQL语句是这样的,你可能会把自己暴露给SQL注入。 这意味着你不必担心行情串联成线,以及还提高了查询性能(假设SQL Server)的,因为它允许执行计划的缓存和重用。
如
Dim sql As String = "Select * from Usertask Where UserId = ? AND JobID = ?"
然后添加2个ADODB.Parameters到命令对象为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
并再次为的JobId参数相同。
这是一个SQL注入漏洞,你不应该做的。 通过做这种方式,你让你的用户给你就像一个用户ID来执行他们想要的任何查询
'; DROP TABLE Usertask; --
相反,使用参数。 根据您是如何执行SQL,也有不同的方法来做到这一点; 请告诉我们,执行SQL查询的代码。
在回答你的问题,
Dim StringWithQuotes As String = "Hello, I've got ""Quotes""!"
此字符串会
您好,我有“行情”!
你也可以使用Chr(34)
在concatentation。
Dim sql As String = "Select * from Usertask Where UserId = " & Chr(34) & Replace(Session("UserId"), Chr(34), Chr(34) & Chr(34)) & Chr(34) & " and JobID=" & CLng(ddlReqTask.SelectedValue)
无论哪种方式工作(其他例子,这一次)。 有些人喜欢这个,因为它可以减少混乱,但上面的例子中的arent完美ledgible和的arent exatly火箭科学
大多数SQL服务器,以我的经验,需要字符串单引号。 做到这一点的最好办法是让.NET deside对你来说,通过使用SQL参数。 下面是一个示例(也VB.Net): http://www.knowdotnet.com/articles/dynamicsqlparameters.html
这也具有对SQL注入安全的利益。
就像这样..
dim user_id as string="SomePerson"
debug.print "UserId=" & chr(34) & user_id & Chr(34)
生产..
UserID="SomePerson"