为什么我的“安全括号”实际上阻止了这个SQL的工作?

时间:2014-08-18 23:23:36

标签: sql sql-server-ce brackets dml square-bracket

由于列名为" Name&#34 ;;我已经获得了一些以前显然需要将括号应用于SQL语句的代码。 "固定"代码是:

dynSQL = string.Format("DELETE FROM Platypi WHERE duckbill = '{0}' and [Name] = '{1}'", tmpType, tmpStr);

不幸的是,这段代码没有完成它的工作 - 记录没有被删除。删除"名称"周围的括号柱:

dynSQL = string.Format("DELETE FROM Platypi WHERE duckbill = '{0}' and Name = '{1}'", tmpType, tmpStr);

......使它发挥作用。为什么要添加"吊杆"列名称导致列无法识别?对问题here的回答表明,在括号中包含列名(和表名)是避免命名与其他对象/数据库关键字等冲突的安全方法。

当带括号的SQL失败时,不会显示错误消息,它只是不起作用。

但请注意,这是不一致的;有时候SQL包含" [Name]"而不是"姓名"工作正常 - IOW,有时相同的SQL语句具有相同的val" duckbill"但是#34;姓名"作品;与" valerie"它失败了(当名为"名称"的列被括起来时)。

1 个答案:

答案 0 :(得分:2)

我们走了。看起来不支持括号。改为使用双引号。

http://technet.microsoft.com/en-us/library/ms174147(v=sql.110).aspx