Sql server 列名是否包含特殊字符(%)等?

Sql server 列名是否包含特殊字符(%)等?,sql-server,Sql Server,在项目中的几个表中,我将一个列名命名为Attention%,出现如下无效列名错误: 说明: 执行当前web请求期间发生异常。请查看堆栈跟踪以了解有关错误的更多信息以及错误在代码中的起源 代码 错误 列名“考勤”无效 是的,我们可以创建,例如,我们需要将它们与带引号的标识符[]放在一起 是的,如果是的话。但是,最好选择更好的列名,特别是因为某些接口/API没有正确引用。帮助我们帮助您。堆栈跟踪在哪里?你能不能也发布在网络请求中使用的查询。如果您的表名为Attention%,请在sql中使用[]或类

在项目中的几个表中,我将一个列名命名为Attention%,出现如下无效列名错误:

说明:

执行当前web请求期间发生异常。请查看堆栈跟踪以了解有关错误的更多信息以及错误在代码中的起源

代码

错误

列名“考勤”无效


是的,我们可以创建,例如,我们需要将它们与带引号的标识符[]放在一起


是的,如果是的话。但是,最好选择更好的列名,特别是因为某些接口/API没有正确引用。帮助我们帮助您。堆栈跟踪在哪里?你能不能也发布在网络请求中使用的查询。如果您的表名为Attention%,请在sql中使用[]或类似的[Attention%]或此Attention%SqlCommand cmd=new-SqlCommandupdate-previousclass=+t2.Text+,Attention%=+t3.Text+,其中sid=+t1.Text+,cn@我认为代码有缺陷:添加命令参数以避免SQL注入和随机中断的查询。从字符串连接生成的Sql命令几乎总是“错误”的。在db表中,我创建列名作为出席人数%,同时在cmd中传递该名称,我经常在使用该表值的多个页面中遇到该错误,我在哪里出错了?是的,你可以,但你为什么要?这样做只会为以后的问题打开大门。选择更好的名字是一个更稳健的解决方案。不要像那样连接SQL。不确定你在评论哪一点,但我坚持我的观点。我并不反对你回答的事实,但当你开始与各种库、报告工具和系统集成时,使用非标准列名可能会给你带来麻烦。连接SQL永远不会正常。@LoztInSpace是的,你是对的,我们应该为它维护标准。
SqlCommand cmd = new SqlCommand("update previous_marks set previousclass=" + t2.Text + ",Attendance%=" + t3.Text + " where sid=" + t1.Text + "", cn)
SqlCommand cmd = new SqlCommand("update previous_marks set previousclass=" + t2.Text + ",[Attendance%]=" + t3.Text + " where sid=" + t1.Text + "", cn)