黑马程序员技术交流社区

标题: ado登录练习问题 [打印本页]

作者: 朱京辉    时间: 2013-1-26 11:00
标题: ado登录练习问题
本帖最后由 朱京辉 于 2013-1-27 06:29 编辑

            using (SqlConnection conn = new SqlConnection (@"Data Source=.\SQLEXPRESS;AttachDBFilename=|DataDirectory|\Database1.mdf;Integrated Security=True;User Instance=True;"))
            {
                conn.Open();
                using (SqlCommand cmd = conn.CreateCommand())
                {
                    cmd.CommandText = "select * from T_User where UserName='" + UserName + "'";
                    if (cmd.ExecuteNonQuery() > 0)
                    { //返回受影响行数>0说明有用户存在
                        using (SqlDataReader reader = cmd.ExecuteReader())
                        {
                            string dbpassword = reader.GetString(reader.GetOrdinal( "Password"));
                            if (Password == dbpassword)
                            {
                                Console .WriteLine("密码正确,登录成功" );
                            }
                            else
                            {
                                Console .WriteLine("密码错误,登录失败" );
                            }
                        }
                    }
                    else //reader返回false,就是没有查找到这个用户名
                    {
                        Console .WriteLine("用户名错误" );
                    }
                }
            }


输入正确的用户名和密码还是现实用户名错误



作者: 罗志强    时间: 2013-1-26 13:22
兄弟,你不要不误导人呀,我差点都被你这问的晕了,之前也遇到这样的问题,谢谢你让我想起来了,不废话了,告诉你为什么吧

你看哈
ExecuteNonQuery是返回受影响的行数,它是针对insert   updata   这样的插入更新才有效的,因为只有这样才是真的受影响了,
你这个查询,只是查询而已,数据库内容是没有改变的,所以拿来的受影响行数啊。

希望你能看懂

你可以用ExecuteReader这样的去查吧
作者: 朱京辉    时间: 2013-1-26 13:36
ShowStyle 发表于 2013-1-26 13:22
兄弟,你不要不误导人呀,我差点都被你这问的晕了,之前也遇到这样的问题,谢谢你让我想起来了,不废话了, ...

我在SQLSERVER里用select查的时候有显示受影响行数1行,呵呵,调试了一下,看来真的不行
作者: 罗志强    时间: 2013-1-26 14:23
朱京辉 发表于 2013-1-26 13:36
我在SQLSERVER里用select查的时候有显示受影响行数1行,呵呵,调试了一下,看来真的不行 ...

汗,,,,,
你不要这样想啊!你自己查看msdn也行啊!哪里要改就会说只是针对insert这样的才会返回受影响的行数吧





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2