将 HTML 插入 SQL Server 时出现 SQL 异常

Posted

技术标签:

【中文标题】将 HTML 插入 SQL Server 时出现 SQL 异常【英文标题】:SQL Exception when inserting HTML to SQL Server 【发布时间】:2015-08-18 16:57:24 【问题描述】:

在将 html 代码存储到 SQL Server 时遇到问题。

尝试插入以下代码时出现一般异常:

<html>
<title>test</title>
<body>
<table cellpadding=10 cellspacing=0 border=0 style='background:#f6f6f6; width:100%; margin:0; padding:0;'>
</body>
</html>

谁能解释为什么这会引发错误?

将完整的 html 代码保存为字符串参数并发送到 SQL。 我知道 HTML 可以像字符串一样存储在 SQL 中,但这给我带来了问题。

我的sql代码是:

insert into UserTemplate (FullCode) values (N'    <html>
    <title>test</title>
    <body>
    <table cellpadding=10 cellspacing=0 border=0 style='background:#f6f6f6; width:100%; margin:0; padding:0;'>
    </body>
    </html>')

错误是:

Msg 102, Level 15, State 1, Line 4 附近有错误的语法 '背景:'。

我发现了问题并通过添加逗号解决了它。但是 HTML 代码会根据用户注册和编辑主题和数据而变化。我需要一种更复杂的存储模式来将我的个人模板存储在数据库中。不要面对这些错误。

谢谢

【问题讨论】:

有可能你没有转义必要的字符,但没有实际的插入语句,错误,只是猜测。 当您询问有关 SQL 异常的问题时,请包含确切的异常消息。 显示 SQL 插入语句。否则纯属猜测。但它可能是单引号。 【参考方案1】:

引用是导致问题的原因。 Insert 'this '' text' 将在 char 列中插入引号。

【讨论】:

【参考方案2】:

您可以使用 TinyMCE 或 CKEditor 在客户端清除 html 中的特殊字符。

Sql Server 将此类字符检测为对SQL-Injection 的威胁。

【讨论】:

SQL Server 不对 SQL 注入进行任何威胁检测。

以上是关于将 HTML 插入 SQL Server 时出现 SQL 异常的主要内容,如果未能解决你的问题,请参考以下文章

尝试将数据表批量插入 SQL Server 时出现 InvalidOperationException

尝试使用多个值插入 SQL Server 时出现不正确的语法错误

为啥在 MS SQL Server 中批量插入时出现“XML 解析:第 2 行,字符 0,文档语法不正确”

将使用 SQL Server Express 2008 创建的 mdf 导入 SQL Server 2005 时出现问题

尝试将 android 连接到 sql server 时出现 NullPointerException

尝试将数据插入多个表时出错 [C# Winform SQL Server] [关闭]