我们正在将数据库后端从 Access 迁移到 SQL Server。
字段名称之一是Key
. 现在Key
是Access 和 SQL Server 中的保留字,因此 Access中的解决方法始终是在字段名称周围放置方括号。
连接到 Access 时,我们OleDBParameter
为每个OleDBCommand
. 在运行时检查命令的CommandText
内容会类似于UPDATE Foo SET [Key]=? WHERE etc
因为记住 OleDB/Access 没有命名参数,只有?
. 那一切都很好。
快进到今天,使用 SQL Server,我们用SqlCommand
和做类似的事情SQLParameter
。因此,在运行时CommandText
读取类似于UPDATE Foo SET [Key]=@Key WHERE etc
因为 SQL 不喜欢旧的问号事物,我们必须开始使用命名参数。
麻烦的是应用程序在这个命令上阻塞,说:
Incorrect syntax near 'varchar'. Must declare the scalar variable "@Key"
只有具有字段名称的表Key
受到影响。其他一切都在迁移到 SQL 后幸存下来,其他表(字段名称没有保留字)都很好。
我知道其中一种解决方案是避免使用保留字作为字段名称,但我希望得到一个答案,让我们能够像往常一样解决保留字。