匹配问题

vividboy 2004-11-27 01:19:05
请看下面的代码:
static string Answer; //存储从数据库读出的密码保护的内容;
static string username; //获取文本框中的"用户名";
...
private void Submit1_ServerClick(object sender, System.EventArgs e)
{
username = user_name.Text; //取得用户名;
//设置连接数据库的变量;
string strConnection , strSQL;
SqlConnection objConnection = null;
SqlCommand objCommand = null;
SqlDataReader objDataReader = null;

//进行数据库的连接; (!!要对数据库进行修改!!)
try
{
strConnection = "server =127.0.0.1; uid = admin; pwd = admin; database = Friends";
strSQL = "SELECT * FROM user_info WHERE userName = '"+username+"'";
objConnection = new SqlConnection(strConnection);
objConnection.Open();
objCommand = new SqlCommand(strSQL , objConnection);
}
catch
{}

//驱动objDataReader;
objDataReader = objCommand.ExecuteReader();
if(objDataReader.Read())
{
question.Text = objDataReader["Question"].ToString(); //将密码保护的问题赋值给标签;
Answer = objDataReader["Answer"].ToString(); //将密码保护的答案赋值给变量;
  
//如果是存在记录才可以显示被隐藏的版面;
Panel1.Visible=false;
   Panel2.Visible=true;
}
else
{
  //Response.Write("<script>alert\"用户名不存在!请检查输入!\"</script>");   //如果没有匹配的记录,弹出警告窗口;
return;
}
objConnection.Close(); //关闭数据库的连接;
}

private void Submit2_ServerClick(object sender, System.EventArgs e)
{
************************************************************
if(answer.Text == Answer) //如果答案匹配,就将下一步的界面显示;
{
Panel1.Visible = false;
Panel2.Visible = false;
Panel3.Visible = true;
}
else
{
//Response.Write("<script>alert\"密码答案输入不正确!请检查输入!\"</script>");//如果答案不匹配,弹出警告窗口;
return;
}

}

问题出在了打"*"的下面的语句,我在上面一个函数中给全局变量Answer赋了从数据库中读到的密码保护答案的值,但是在页面中输入了正确的答案(文本框answer),确认为不相等。
我用“步进”的调试方法表明,执行的是else语句,不知道是怎么回事??
请各位高手不惜赐教。

顺便问一下:为什么不可以使用Response.Write("<script>alert\"密码答案输入不正确!请检查输入!\"</script>"); 语句?在运行时弹出有“脚本错误”的对话框,删除语句则没有对话框弹出。

解决了任一个题目都给分。
谢谢先!
...全文
87 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
greennetboy 2004-11-27
  • 打赏
  • 举报
回复
全局变量肯定作用于整个应用程序, 建议你1.检查是否存在局部 Answer覆盖全局变量2.看你给Answer负值的函数发生在 if(answer.Text == Answer)之前还是后面
vividboy 2004-11-27
  • 打赏
  • 举报
回复
首先谢谢你。

我知道在if语句中的条件不成立,但是我的疑惑是Answer是全局变量,我在上一个函数中给它赋了值,
在调试时也显示"Answer"就是我数据库中的值,但是在下面那个函数中"Answer"却为空了,不知道是怎么回事,不是全局变量的生命周期是整个程序吗???
请赐教!

至于下面的问题,你的写法也可以,但是.NET中是支持多种语言混合编程的,我用的是JavaScript
而且我在以前的编程中也用过,完全没有问题,所以应该不是语法问题。
vividboy 2004-11-27
  • 打赏
  • 举报
回复
好了,问题都解决了,
谢谢各位的关心和宝贵的意见,
结贴了。
vividboy 2004-11-27
  • 打赏
  • 举报
回复
上面的切中要害了,
我查了,就是少了“空格”
我的数据库中对 Answer属性的定义是 varchar(20) 假设存储的值是"我很好"
那么全局变量Answer的值是"我很好 "最后都自动的添了14个空格。
当然与answer.Text = "我很好"不可以匹配了。
但怎么消除这个问题呢(消除自动添加的空格)?
是用代码还是修改数据库?
请高手指教。
谢谢。

P.S Response.Write("<script>alert\"密码答案输入不正确!请检查输入!\"</script>");的问题已经解决,是书写问题。大家不用回答了。
greennetboy 2004-11-27
  • 打赏
  • 举报
回复
if answer.text really values Answer ,it must go to run if{},but it ran else{}.I confirm that one:answer.text!=Answer, Why?you must ask yourself,not anyone here,because only you can trace the apllciation;two:I guess your trouble happened on Answer,you talked a Function to get the right data,it's really right?Trace it!


alert我记得应该这样用吧
alert("Result from selectSingleNode:\n" +
"Node, <"+oNode.nodeName + ">:\n\t" +
oNode.xml + "\n\n");

lgg06 2004-11-27
  • 打赏
  • 举报
回复
tong 上,可能性比较大
既然要运行else 而非if ,那肯定是if 条件不成立,,可用单步调试,看堆栈中的Answer值
如果怀疑全局变量的问题,,那也可已自己检查一下吗,,对怀疑的地方该下变量不就好了
ty34565 2004-11-27
  • 打赏
  • 举报
回复
是不是因为没去掉answer.text和Answer的空格

110,530

社区成员

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

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

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