参考:String issues. Format "First Last" to format "Last, First" with a twist
我的功能很适合mos名字。但是,我坚持使用'在他们中间,即:O' Shane。我循环一个数据集,将名称传递给函数来修复它,然后返回固定名称。但是,字符串中有一个'在它中,它弄乱了SQL语句。
以下是相关代码:
strSql = ("update tbl set Name=" & "'" & strNewName & "'" & " where ID= " & "'" & ID & "'")
strNewName = NameFix(strName)
Public Function NameFix(ByVal strOriginalName As String) As String
Dim regex As New Regex("(?:(?:mr\.|miss|mrs|ms|by)\s+)?(\S+).*(?<=\s)(\S+)$", RegexOptions.IgnoreCase)
Dim strNewName As String = regex.Replace(strOriginalName, "$2, $1")
Return strNewName
我如何通过&#39;在一个名字?
TIA!
答案 0 :(得分:2)
使用SQL参数 - 不要将用户输入的值放在永远的SQL语句中。这是一个很大的安全漏洞,称为SQL注入。
虽然您可以用'
替换每个''
以逃避引用,但这仍然是一种不好的做法。使用SQL参数将允许服务器优化和缓存查询计划,以便使用不同的参数进行重用。
您的查询将如下所示:
UPDATE tbl SET Name = @newName WHERE ID = @id
如果使用ADO.NET,则将值添加到SqlCommand.Parameters
集合。
答案 1 :(得分:0)
'
字符的转义序列是添加另一个'
,因此请'
替换''