在VB6的字符串转义引号在VB6的字符串转义引号(Escaping quotes in a stri

2019-06-01 01:51发布

我试图做一些小的修改,以一个老VB web应用程序,我需要添加一个字符串,我没有运气迄今引号内。 该字符串是

Dim sql As String = "Select * from  Usertask Where UserId = " & Session("UserId") & " and JobID=" & ddlReqTask.SelectedValue

我需要添加围绕会议(“用户名”)值引号。

Answer 1:

你可以用""来插入报价为一个字符串如:

dim sometext as String = "Hello ""Frank"" how are you?"

它给你

你好“弗兰克”你怎么样?



Answer 2:

为了逃避,你只需要添加一个报价报价,我相信这是你所需要的:

Dim sql As String = "Select * from  Usertask Where UserId = """ & Session("UserId") & """ and JobID=" & ddlReqTask.SelectedValue


Answer 3:

我建议你使用参数化的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参数相同。



Answer 4:

这是一个SQL注入漏洞,你应该做的。 通过做这种方式,你让你的用户给你就像一个用户ID来执行他们想要的任何查询

'; DROP TABLE Usertask; --

相反,使用参数。 根据您是如何执行SQL,也有不同的方法来做到这一点; 请告诉我们,执行SQL查询的代码。


在回答你的问题,

Dim StringWithQuotes As String = "Hello, I've got ""Quotes""!"

此字符串会

您好,我有“行情”!



Answer 5:

你也可以使用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火箭科学



Answer 6:

大多数SQL服务器,以我的经验,需要字符串单引号。 做到这一点的最好办法是让.NET deside对你来说,通过使用SQL参数。 下面是一个示例(也VB.Net): http://www.knowdotnet.com/articles/dynamicsqlparameters.html
这也具有对SQL注入安全的利益。



Answer 7:

就像这样..

dim user_id as string="SomePerson"
debug.print "UserId=" & chr(34) & user_id & Chr(34)

生产..

UserID="SomePerson"   


文章来源: Escaping quotes in a string in VB6
标签: vb6