问题描述
https://msdn.microsoft.com/zh-cn/library/vstudio/system.data.sqlclient.sqlparameter(v=vs.100).aspx里备注说参数名称不区分大小写。但我代码里,如果sql语句有@cid,参数名称是@CID,提示都是必须声明标量变量。
解决方案
解决方案二:
sql语句和字段大小写不敏感,但是占位符参数,应该是敏感的,尽量一致吧
解决方案三:
引用1楼zhi_ai_yaya的回复:
sql语句和字段大小写不敏感,但是占位符参数,应该是敏感的,尽量一致吧
sql的字段大小写敏感和数据库本身的排序规则有关的。我现在就是奇怪占位符到底敏感不敏感,msdn上说不敏感,我代码里敏感,我用的是一个第三方的库,开发人的人说正常可以用,但我用不了,不知道问题出在哪儿,和版本或者配置有关?
解决方案四:
1、你是用SQLServer的话请看内容,否则直接跳到第4点http://blog.csdn.net/rxr1st/article/details/21799332、你可以用下面的SQL语句,确认一下结果SELECTSERVERPROPERTY('collation');3、修改方案在下面链接里面讨论已经非常充分了http://bbs.csdn.net/topics/3500893334、如果不是,能否把SQL语句详细贴出来看看
解决方案五:
再补充一下,是否是存储过程?
解决方案六:
c#ado.net对参数不区分大小写,但是建议按照定义的大小写一直来书写,包括参数的顺序
解决方案七:
引用3楼richer的回复:
1、你是用SQLServer的话请看内容,否则直接跳到第4点http://blog.csdn.net/rxr1st/article/details/21799332、你可以用下面的SQL语句,确认一下结果SELECTSERVERPROPERTY('collation');3、修改方案在下面链接里面讨论已经非常充分了http://bbs.csdn.net/topics/3500893334、如果不是,能否把SQL语句详细贴出来看看
我一开始也怀疑是服务器排序规则,因为服务器排序是二进制排序的,区分大小写,就另外建了一个数据库,建立的时候选了不区分的排序规则,但结果还是一样,但我没有另外找数据库,不知道默认是不是还有关系,存储过程和参数名称是不是只按照第一次安装的情况?DimsqlAsString="selectCID,hy_cname,hy_ctype,hy_csort,hy_byzd1,hy_byzd2,hy_byzd3,hy_byzd4fromhy_categorywhereCID=@cid"DimconnstrAsString="............"Dimsqlparam(0)AsSqlParametersqlparam(0)=NewSqlParameter("@CID",SqlDbType.VarChar)sqlparam(0).Value="00020001"就是,sql里是@cid,参数是@CID,我一直认为参数化sql是.net实现的,如果ado.net是把参数传递给数据库去实现的,到确实有可能是大小写敏感了
解决方案八:
没注意过这事情,一般都是跟存储过程或者SQL文本里面一致的Parameter
解决方案九:
保持一致能确保万无一失。但刚刚写了个Demo试了试,确实不区分的啊
解决方案十:
引用楼主hztltgg的回复:
https://msdn.microsoft.com/zh-cn/library/vstudio/system.data.sqlclient.sqlparameter(v=vs.100).aspx里备注说参数名称不区分大小写。但我代码里,如果sql语句有@cid,参数名称是@CID,提示都是必须声明标量变量。
msdsn指的是,执行存储过程,构造SqlPaameter的时候,不区分大小写。//比如,存储过程的参数是@CategoryName,你这里写成@categoryName也无妨SqlParameterparameter=newSqlParameter();parameter.ParameterName="@CategoryName";parameter.SqlDbType=SqlDbType.NVarChar;parameter.Direction=ParameterDirection.Input;parameter.Value=categoryName;
解决方案十一:
这个不敏感呀,