如何将textarea数据放入SQL Server数据库?

时间:2010-07-15 14:35:32

标签: sql sql-server asp-classic textarea ado

(这是经典的ASP) 我确定这只是一个逃避文本的案例,但我还没有找到任何东西。 我有一个textarea,可能包含各种各样的字符,我需要更新记录与该textarea中的任何内容,但我收到一个错误,打破我的SQL查询,我肯定是与内容相关文本区域。

所以我的SQL查询到目前为止:

"UPDATE document SET displayheading='" & _
    stripillegal(request("txt_displayheading")) & _
    "', displayorder=" & displayorder & _
    ", shortdescription='" & stripillegal(request("txt_shortdescription")) & _
    "', document_note='" & request("document_note") ...blah blah blah

所以我想知道如何包含textarea以便我可以在不破坏查询的情况下更新记录?

2 个答案:

答案 0 :(得分:1)

如果有'这样的字符,则查询会中断,您需要先替换它们:

newStr = Replace("'", "''", request("txt_displayheading"))

在您的查询中使用newStr变量而不是request("txt_displayheading"

答案 1 :(得分:1)

这是一种避免动态SQL并解决SQL注入潜力的方法。它使用参数化查询。这是一个SQL解决方案:

    DECLARE @DisplayHeading varchar(100)
    DECLARE @DisplayOrder int
    DECLARE @ShortDescription varchar(100)
    DECLARE @DocumentNote varchar(100)

    DECLARE @command nvarchar(500)
    DECLARE @params nvarchar(500)

    SET @command = N'UPDATE document
        SET displayheading=@DisplayHeading
        , displayorder=@DisplayOrder
        , shortdescription=@ShortDescription
        , document_note=@DocumentNote
        --...blah blah blah'

    SET @params = N'@DisplayHeading varchar(100), @DisplayOrder int, 
             @ShortDescription varchar(100), @DocumentNote varchar(100)'

-- Assign values to user variables.

EXEC sp_executesql @command, @params, @DisplayHeading,
     @DisplayOrder, @ShortDescription, @DocumentNote


以下是您可以尝试使用ADO:

    cmd.CommandText = "UPDATE document " & _
         "SET displayheading=@DisplayHeading, displayorder=@DisplayOrder, " & _
         "shortdescription=@ShortDescription, document_note=@DocumentNote " & _
         "--...blah blah blah"

    cmd.Parameters.Add(New SqlParameter("@DisplayHeading", DisplayHeading))
    cmd.Parameters.Add(New SqlParameter("@DisplayOrder", DisplayOrder))
    cmd.Parameters.Add(New SqlParameter("@ShortDescription", ShortDescription))
    cmd.Parameters.Add(New SqlParameter("@DocumentNote", DocumentNote))