以XX开头的标识符太长,最大长度为128

qz6412525 2017-09-12 12:06:44
如题,是一条sql server数据库插入语句,语句在数据库客户端上能跑通,但是拿到程序中运行就报错
语句是通过XML文件写入的:
jbupdate="update BRGL_JBXX set BH='@人员编号',XM='@姓名',XB='@性别',CSRQ='@出生日期',SFZBH='@身份证编号',SBLX='@医保类型',SBKH='@社保卡号',XZDZ='@现住地址',SJHM='@手机号码',LXDH='@联系人电话' where ID='@病人ID'"

报错如下:
以 'update BRGL_JBXX set BH='00579424',XM='董书源',XB='1',CSRQ='2004/7/10 9:19:17',SFZBH='371326200506080417',SBLX='',SBKH='@社保卡号',XZDZ' 开头的 标识符 太长。最大长度为 128。失败:"update BRGL_JBXX set BH='00579424',XM='董书源',XB='1',CSRQ='2004/7/10 9:19:17',SFZBH='371326200506080417',SBLX='',SBKH='@社保卡号',XZDZ='平邑',SJHM='13969904787',LXDH='13969904787' where ID='270586'"

后面的SQL语句在数据库里面是能正常执行的,求大佬解答为什么会报这样的错误。
...全文
393 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
qz6412525 2017-09-12
  • 打赏
  • 举报
回复
引用 3 楼 sp1234 的回复:
参数,你不应该写单引号。
你的意思是说直接用 @联系人电话 这样的吗?我试一下
qz6412525 2017-09-12
  • 打赏
  • 举报
回复
引用 2 楼 chb345536638 的回复:
调试一下吧,把你程序最后生成的sql语句显示出来,话说你这个是参数化?有单引号的会直接当成值了的
那个报错里面的语句就是生成的SQL语句,拿到客户端能执行成功,所以找不出来是什么原因
  • 打赏
  • 举报
回复
参数,你不应该写单引号。
  • 打赏
  • 举报
回复
调试一下吧,把你程序最后生成的sql语句显示出来,话说你这个是参数化?有单引号的会直接当成值了的
lkf181 2017-09-12
  • 打赏
  • 举报
回复
去掉@试试,我觉得是...........
  • 打赏
  • 举报
回复
有很多种可能性,主要是因为你没有能贴出更详细一点的调试画面造成的。比如说你遇到了某种“存储过程”,它又跑到数据库系统里边去拼接字符串去了,而此存储过程有错,也是会出这个问题。
正怒月神 2017-09-12
  • 打赏
  • 举报
回复
sp1234说的对, 参数化设置,放到 sqlparameter中,是不需要在sql语句里设置单引号的。
  • 打赏
  • 举报
回复
比如说吧,所谓“拿到程序中报错”,那么抛出异常的代码的前后上下文代码呢?调试画面呢?
  • 打赏
  • 举报
回复
引用 5 楼 qz6412525 的回复:
引用 3 楼 sp1234 的回复:
参数,你不应该写单引号。
你的意思是说直接用 @联系人电话 这样的吗?我试一下
单独说sql 语句的话,是要符合参数的基本形式的。这是仅仅看 sql 语法,而不是看你的应用实际。 假设你这个是 http 页面 url 参数之类的,那么又是另外一回事儿了。你要先把自己的问题的应用实际的调试画面贴出来,才知道你做了什么、正在做什么。否则你扔出了一个字符串,可能误导别人。

111,094

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧