Excel Cell值为SQL,包括特殊的Charatcers



我正在尝试将信息从excel广播表写入SQL中的表格。该代码工作正常,但是我偶然发现了特殊角色问题。我的份额中有一列以供笔记,然后将其转移到SQL表中。我发现了逗号的评论,并且代码失败了。

是否有一种更改SQL表处理或修改VBA代码的方法?

代码下面:

stSQL = "INSERT INTO Notes " & _
                    "(ID, Category, Ref, Client, Notes, Date_Loaded, Latest) " & _
                    " VALUES (" & _
                    "1, " & _
                    "4, " & _
                    "'" & Sheets("Clients").Range("N" & i).Offset(0, -12).Value & "', " & _
                    "'" & Sheets("Clients").Range("N" & i).Offset(0, -11).Value & "', " & _
                    "'" & Sheets("Clients").Range("N" & i).Value & "', " & _
                    "'" & Date & "', " & _
                    "1)"

预先感谢

在一般 SQL注入中,如果您用SQL编码任何内容,则应该很清楚。

这是大约10年前在所有语言中的大型安全性。如今,几乎所有编程语言都受其保护。

甚至VBA。

通常,您需要编写类似的内容(code dbformus(:

Dim cmd            As ADODB.Command
Dim prm1           As ADODB.Parameter
Dim prm2           As ADODB.Parameter
Dim prm3           As ADODB.Parameter
Dim strSql         As String
strSql = "UPDATE justtesting SET myTest = ?, myDate = ? WHERE id = ?"
Set cmd = New ADODB.Command
With cmd
    Set .ActiveConnection = CurrentProject.Connection
    .CommandText = strSql
    .CommandType = adCmdText
    Set prm1 = .CreateParameter("mytext", adVarWChar, adParamInput, 35)
    .Parameters.Append prm1
    prm1.Value = "as""d''##'fasdf"
    Set prm2 = .CreateParameter("mytimestamp", adDate, adParamInput)
    .Parameters.Append prm2
    prm2.Value = Now
    Set prm3 = .CreateParameter("mylong", adInteger, adParamInput)
    .Parameters.Append prm3
    prm3.Value = 42
    .Execute , , adExecuteNoRecords
End With
Set cmd = Nothing

查看代码中的问号。即使您尝试对它们进行SQL注入,ADODB也知道该怎么做,可以绕过它并保护您的数据。

,如果您这样的Google Google,您可以找到有关它的更多示例:https://www.google.com/search?q = avoid sql indoction indoction vba& oq = avoid sql indoction indoction investion vba&amqs = chrome..69I57.3193J0J4J4J4J4J4& sourceid = Chrome = Chrome umempemump;

通常,读取SQL的方式是巨大的安全问题。这样写的唯一原因是,如果您是唯一使用该应用程序的人。通常,任何几乎没有技能的人都可以删除您的数据库或在那里阅读值。或做其他痛苦的事情。

最新更新