textbox.text的最后字符是空格怎么办(连接数据库)

shadow_luo 2009-03-16 04:35:15
情况是这样的
现在有一个数据表用户,里面有用户名和密码字段,其中密码为123,我在textbox里面输入123空格空格,
在验证的语句里面
string mysql = "select * from [User] where UserId='" + tbID.Text+ "' and UserPwd='" + tbPwd .Text+ "'";
tbpwd的text里面输入123加上2个空格在最后,验证也能查询寻到,如果我需要验证不到该怎么办,就是最后的2个空格也算是字符,该如何办??
谢谢高手们帮忙!!!
...全文
328 34 打赏 收藏 转发到动态 举报
写回复
用AI写文章
34 条回复
切换为时间正序
请发表友善的回复…
发表回复
Terran5 2009-03-17
  • 打赏
  • 举报
回复
string mysql = "select * from [User] where UserId='" + tbID.Text.Trim()+ "' and UserPwd='" + tbPwd .Text.Trim()+ "'";
devilli 2009-03-17
  • 打赏
  • 举报
回复
好问题,mark
liulanglang 2009-03-17
  • 打赏
  • 举报
回复
Trim();
tbPwd.Text.Trim()
liulanglang 2009-03-17
  • 打赏
  • 举报
回复
Trim();
tbPwd.Text.Trim()
hnpylwp 2009-03-17
  • 打赏
  • 举报
回复
他们说的方法、都有实现的可能!
学习了!
Fly_yuanrunfei 2009-03-17
  • 打赏
  • 举报
回复
填写参数前先把空格去了
tbPwd.Text.Trim()方法传入参数
zy69756750 2009-03-17
  • 打赏
  • 举报
回复
trim()啊。。。
shadow_luo 2009-03-17
  • 打赏
  • 举报
回复
19楼的思路可行,但是我没有实际操作过,不知道可行不!
马老虎 2009-03-17
  • 打赏
  • 举报
回复
把 密码进行加密,验证加密后的内容!
hanyu0528 2009-03-17
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 sdfkfkd 的回复:]
可以这样查找,就可以限定前导和尾随空格

SQL code
string mysql = "select * from [User] where 'a'+UserId+'a'='a" + tbID.Text+ "a' and
'a'+UserPwd+'a'='a" + tbPwd .Text+ "a'";



也就是在字段和条件的前后各加一个什么字符,用来保证字段和条件都没有前导和尾随空格,再进行比较,默认

如果是MS SQL,也可以这样进行

SQL code
string mysql = "select * from [User]
where convert(varbinary,Us…
[/Quote]
学习了~!!!
hanyu0528 2009-03-17
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 sdfkfkd 的回复:]
可以这样查找,就可以限定前导和尾随空格

SQL code
string mysql = "select * from [User] where 'a'+UserId+'a'='a" + tbID.Text+ "a' and
'a'+UserPwd+'a'='a" + tbPwd .Text+ "a'";



也就是在字段和条件的前后各加一个什么字符,用来保证字段和条件都没有前导和尾随空格,再进行比较,默认

如果是MS SQL,也可以这样进行

SQL code
string mysql = "select * from [User]
where convert(varbinary,Us…
[/Quote]
学习了~!!!
特别 2009-03-17
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 shadow_luo 的回复:]
15楼的方法可行,但是不知道是什么原因可以弄成这个样子,希望有详细一点的解答!!
[/Quote]
具体原因也不太清楚了
你可以参考一下
http://support.microsoft.com/kb/316626/zh-cn
huang_net 2009-03-17
  • 打赏
  • 举报
回复
tbPwd.Text.Trim()
shadow_luo 2009-03-16
  • 打赏
  • 举报
回复
15楼的方法可行,但是不知道是什么原因可以弄成这个样子,希望有详细一点的解答!!
睡神在睡觉 2009-03-16
  • 打赏
  • 举报
回复
string sql_str;
byte[] buff = System.Text.Encoding.Default.GetBytes(textBox1.Text);
for(int i = 0; i < buff.Length ; i++)
{
sql_str += buff[i].ToString("X");
}
//此时得出的sql_str的值就是你要插入数据库的值
//在校验的时候同样将TextBox1.Text的值按上述方法转换再与数据库中提出的值比对,就不会发现省略掉空格了


附加点代码吧
睡神在睡觉 2009-03-16
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 MicroDeviser 的回复:]
在保存密码时,把前后空格去掉啊
[/Quote]

去掉空格是非常错误的说法,用空格做密码,有很多破解软件看到的就是一片空白,相对来说比可视字符要安全的多,楼主可以将密码存储的时候用ASCII编码存储,这样空格就可以校验了,在ASCII编码里空格是0x20,就可以校验出来了
lchh0917 2009-03-16
  • 打赏
  • 举报
回复
想到SQL注入,继续关注~
uncleson88 2009-03-16
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 sdfkfkd 的回复:]
可以这样查找,就可以限定前导和尾随空格

SQL code
string mysql = "select * from [User] where 'a'+UserId+'a'='a" + tbID.Text+ "a' and
'a'+UserPwd+'a'='a" + tbPwd .Text+ "a'";



也就是在字段和条件的前后各加一个什么字符,用来保证字段和条件都没有前导和尾随空格,再进行比较,默认

如果是MS SQL,也可以这样进行

SQL code
string mysql = "select * from [User]
where convert(varbinary,Us…
[/Quote]
可行!
不知道这是不是SQL的一个BUG啊
特别 2009-03-16
  • 打赏
  • 举报
回复
可以这样查找,就可以限定前导和尾随空格

string mysql = "select * from [User] where 'a'+UserId+'a'='a" + tbID.Text+ "a' and
'a'+UserPwd+'a'='a" + tbPwd .Text+ "a'";

也就是在字段和条件的前后各加一个什么字符,用来保证字段和条件都没有前导和尾随空格,再进行比较,默认

如果是MS SQL,也可以这样进行

string mysql = "select * from [User]
where convert(varbinary,UserId)=convert(varbinary,'" + tbID.Text+ "') and
convert(varbinary,UserPwd)=convert(varbinary,'" + tbPwd .Text+ "')";

这样有一点要注意:区分大小写了,如果要不区分大写小,先统一转换成大写或小写

uncleson88 2009-03-16
  • 打赏
  • 举报
回复
LZ可以到SQL语句方面的论坛问问,记得把答案贴上来哦 :)
加载更多回复(13)

111,126

社区成员

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

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

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