日期:2014-05-18  浏览次数:20374 次

怪事,验证用户名是否存在时,要点二次才行.
用户注册这一块,就是点击查看此用户名是否存在.
前台代码:
<asp:Button   ID= "Button1 "   runat= "server "   OnClick= "Button1_Click "   Text= "检查用户名是否注册 "   />
后台代码:
        protected   void   Button1_Click(object   sender,   EventArgs   e)
        {
                string   Username   =   username.Text.ToString().Trim();
                Username   =   CleanHtml.htmlInputText(Username);
                if   (Username   !=   " ")
                {
                        DBConn   db   =   new   DBConn();
                        SqlCommand   cmd   =   db.GetCmd( "select   id   from   web_user   where   username   =   ' "   +   Username   +   " ' ");
                        if   ((int)cmd.ExecuteScalar()   ==   0)
                        {
                                JScript.Alert( "恭喜你,此用户名还没有被注册! ");
                        }
                        else
                        {
                                JScript.Alert( "对不起,用户名已被注册请重新输入! ");
                        }
                }
                else
                {
                        JScript.Alert( "请输入用户名! ");
                }

        }  

问题是:运行的时候,随便输入一个用户名,然后点击 "检查用户名是否注册 "按钮后,如果用户名是已经存在的,则需要按2次后才提示用户名已存在,按第一次时页面没反应,如果用户名是未存在的,则按第一次进没反应,按第二次时,提示出错 "未将对象引用设置到对象的实例。 "出错的语句在   if   ((int)cmd.ExecuteScalar()   ==   0)这一行.
请高手指点怎么回事.调试了好多次也不成功.急人.

------解决方案--------------------
从理论上来说是你的username丢失造成的.
------解决方案--------------------
cmd.ExecuteScalar() 如果是查询语句的话,返回的值是-1,当然用户名存在啦!我前不久也做过!取值吧!!