ASP.NET的web开发中,关于在GRIDVIEW中取列的值问题求解答?

先截图看我写的代码

我用重定向跳转页面,就是用户和密码两个文本框,一个按钮登录,当我点击按钮时我判断在数据库中是否有值,如果有成功跳转,如果只是用户名不正确,就跳转到提示用户名错误的页面,反之如果密码不正确就跳转到提示密码错误的页面中去,怎么做?
我上面的代码只能判断成功登录正确,但是如果我把密码或者用户名其中一个输入错误它就报错了?求解答?似乎是dt.rows[0][0]没有值,但是这个要怎么做?
我是新手,请尽量详细点,谢谢

sql语句是要查询数据库中和你输入的用户名密码相匹配的数据,如果你输入错误的密码的话,就查询不到对应的数据,SelectBy返回一个空的DataTable,这时你对DataTable进行操作就会报错。


你这个需求的话:

        public string Login(string userName, string passWord)
        {
            string strSql = string.Format("select * from dbo.Tofan where name'{0}' ",userName);
            DataTable dt = SqlHelp.SelectBy(strSql);
            string message = string.Empty;

            if (dt != null)
            {
                if (dt.Rows[0]["pass"].ToString() == passWord)
                {
                    message = "Success!";
                }
                else
                {
                    message = "密码不正确!";
                }
            }
            else
            {
                message = "用户名不存在!";
            }

            return message;
        }

追问

我用了你的方法试了,还是报一样的错误?

也是用户名和密码正确才能进去,如果我输入的用户名或者密码其中一个错误它就报错了

 

请帮我再看看,谢谢

追答

把sql语句里面的“and pass=='{1}'”去掉。
先查询数据库中是否有该用户的数据。如果有该用户的数据,则取出来,进入下一步逻辑判断。否则提示“用户名不存在”。
然后判断数据库中该用户的密码与输入的密码是否一致,如果一致,则成功。否则提示“密码不正确”。

温馨提示:内容为网友见解,仅供参考
第1个回答  2014-01-06
如果你输入错误的用户名或者密码的话,你那个 table会是空的,所以会出错。如果非要按照你的逻辑去操作的话,你只需要判断table中的rows是不是为空的,是为空的话那就说明账号或者密码错误,否则就表示账号密码是正确的。追问

我用了你说的方法判断,还是跟我写的错误一样,它就直接跳进去 了,反正只要你的用户名和密码其中一项错误了,它就报错了,如果可以希望能给我代码看?

 

就是这道题:

                用户名不正确

追答

其实这种情况下不用使用Datatable,用Datareader最简单。你上面的那个错误,是因为即使没有记录,datatable也不是为空的,应该同时判断dt和dt.Rows不为空,同时dt.Rows.Count必须大于0.如果使用DataReader的话,你就只需要判断DataReader.reader()是不是存在即可。

第2个回答  2014-01-06
取textbox1的文本框内值,查询数据库,输出数据库里面的密码,判断密码与用户输入的是否一致,就行了
相似回答
大家正在搜