sqlcommand函数 执行查询的过程

wdh123love 2015-07-29 11:45:38

如图,sqlcommand函数 执行查询时跟踪到这一步,sqlstring的值为:select top 1 UserName from ERPUser where username='1'or(userpwd='1')--'
1、将sqlstring的值复制出来,放到sql查询窗口执行,查到了一条数据
2、按F5继续调试,执行sqlcommand 函数,返回数据为空
3、代码没问题,其它执行查询语句正常

问题原因,可能是以为sqlstring中带有注释符号“--”
想问一下,哪位大侠知道sqlcommand函数执行 查询的内部机制么?
...全文
158 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
wdh123love 2015-07-30
  • 打赏
  • 举报
回复
引用 4 楼 lovelj2012 的回复:
1、sql语句在数据库执行有记录,代码调用一定会有记录 2、确认下你的SqlConnection连接的数据库,是不是你执行sql语句的服务器 3、or和前面的东东敲一个空格
查出来 ,是因为我少描述了第一点:1、将sqlstring的值复制出来,放到sql查询窗口执行(修改了密码数值),查到了一条数据 (数据库中密码是加密后的,我新建查询的时候把1替换成加密后的密码了,所以能查得到;这也是为什么执行sqlcommand函数的时候返回空,而不是报错的原因)
wdh123love 2015-07-29
  • 打赏
  • 举报
回复
引用 3 楼 acade2012 的回复:
where username='1'or(userpwd='1') or的前后不用加空格的么?
根据语法解析的原理,这里应该是可以不用空格的,而且,如果是空格问题,它应该会报错,而不会返回查询结果为空
江南小鱼 2015-07-29
  • 打赏
  • 举报
回复
1、sql语句在数据库执行有记录,代码调用一定会有记录 2、确认下你的SqlConnection连接的数据库,是不是你执行sql语句的服务器 3、or和前面的东东敲一个空格
acade2012 2015-07-29
  • 打赏
  • 举报
回复
where username='1'or(userpwd='1') or的前后不用加空格的么?
acade2012 2015-07-29
  • 打赏
  • 举报
回复
where username='1'or(userpwd='1')
风云再起9310 2015-07-29
  • 打赏
  • 举报
回复
https://msdn.microsoft.com/zh-cn/library/system.data.sqlclient.sqlcommand.aspx 你可以参考一下这个,希望可以帮到你
penglan_ 2015-07-29
  • 打赏
  • 举报
回复
一般情况是sqlstring里面引用变量时格式不对,你把sql语句定义成一整个string试一下就明白了

110,534

社区成员

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

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

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