一个查询问题

shenen 2004-01-06 07:21:44
一个查询页面,让用户在txtA中输入一个人名,就可以查出这个人的资料。
写法如下:
“ SELECT * FROM person WHERE person_name=’” & txtA.Text & “’”
如果用户在txtA中输入’ or ‘1’=’1
就可以查出所有人的资料了,我不想让他查出所有人的资料。请问各位高手是怎样解决这个问题的。
...全文
27 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
buer 2004-01-07
  • 打赏
  • 举报
回复
CMIC(大象)说的很对!!
也可以先筛选一些数据字符,但很费事
kjphe 2004-01-07
  • 打赏
  • 举报
回复
建议你用存储过程
CMIC 2004-01-06
  • 打赏
  • 举报
回复
使用Sql参数
SqlCommand cmicCmd=new SqlCommand("SELECT * FROM person WHERE person_name=@person_name");

cmicCmd.Parameters.Add(new SqlParameter("@person_name",你的数据类型));
cmicCmd.Parameters["@person_name"].Value=txtA.Text;

想“ SELECT * FROM person WHERE person_name=’” & txtA.Text & “’”还有安全问题,比如用户在txtA中输入' delete person --,你的person表中的数据可就完蛋了。




dongjie1928 2004-01-06
  • 打赏
  • 举报
回复
晕,可以这样用:
这个SQL写成“ SELECT * FROM person WHERE person_name= @person_name";
再对这个@person_name赋值,就解决了你的问题。(具体代码不写了,给你点思路)
PS:你那种组合sql的方法很容易被破解,特别是在登陆时,一般登陆采用的是参数方法,这样可以避免错误,在C#中,用参数方法,是将参数值作为一个整体,赋给sql,

veryhappy 2004-01-06
  • 打赏
  • 举报
回复
在查询前先替换一些非法的字符
shenen 2004-01-06
  • 打赏
  • 举报
回复
谢谢各位:
假设我的姓名字段应该可以存放=,or 字符呢?
osborne 2004-01-06
  • 打赏
  • 举报
回复
string key = txtA.Text.Replace(" or ","");
把 " or "给替换掉!
gj0001 2004-01-06
  • 打赏
  • 举报
回复
判断TEXT的值,有非法字符就取消
zhongkeruanjian 2004-01-06
  • 打赏
  • 举报
回复
在查询前判断TXTA。TEXT的值,如果等于上述两个,就返回错误信息
donger2000 2004-01-06
  • 打赏
  • 举报
回复
禁止输入空格,“=” 等特殊字符,或者用“ SELECT TOP 1 * FROM person WHERE person_name=’” & txtA.Text & “’”就限制只能查到一点记录了
shenen 2004-01-06
  • 打赏
  • 举报
回复
这个问题已经困绕我很久了

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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