数据库项目 - 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语句技巧以及注意点

mysql insert语句出错

“查询输入必须至少包含一个表或查询”添加“INSERT INTO”语句时出错

sql server 中insert into 语句,数据一律加单引号吗,还是说如是数字,可不加引号.

校验Select和Insert的方法

SQL Insert 语句,没有错误或异常,但没有插入数据