将 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 时出现问题