数据库项目 - INSERT 语句出错
Posted
技术标签:
【中文标题】数据库项目 - INSERT 语句出错【英文标题】:Database Project - Error with INSERT statement 【发布时间】:2013-03-15 17:20:26 【问题描述】:我正在尝试使用 Visual Studio 2012 中的数据库项目为我的数据库播种。作为我的部署后脚本的公园,我有一个类似于以下内容的语句:
INSERT INTO SomeTable (SomeTextCol) Values (N'$(function());')
列定义为NVARCHAR(MAX)
这会导致构建后事件失败。然而奇怪的是,如果我使用 SSMS 执行语句,它会成功。
这是因为数据库项目在后台使用 SQLCMD 造成的吗?
如何解决这个错误(同时仍然能够将 jQuery 插入表中)- 更改列值对我来说不是一个选项,因为我不拥有架构。
【问题讨论】:
【参考方案1】:你是对的,这是由 $ 是特殊字符的 sqlcmd 引起的。 解决此问题的一种解决方案是连接两个字符串:
INSERT INTO SomeTable (SomeTextCol) Values (N'$'+'(function());');
它有点难看,但它有效。另一种方法是为 jQuery 使用不同的符号,比如它的全名:
INSERT INTO SomeTable (SomeTextCol) Values (N'jQuery(function());');
或者,如果你在函数内部有很多对 jQuery 的引用:
(function(JQ)
JQ(
function()
//other references to JQ
);
)(jQuery);
最后一个解决方案还有一个额外的优势,即任何在页面其他任何地方定义$
或JQ
的人都不会破坏您的代码,因为“您的”JQ
是在仅对您的代码可见的闭包中定义的。
【讨论】:
以上是关于数据库项目 - INSERT 语句出错的主要内容,如果未能解决你的问题,请参考以下文章
使用notepad++/excle快速将cvs文件转换为insert语句技巧以及注意点
“查询输入必须至少包含一个表或查询”添加“INSERT INTO”语句时出错