注册 登录
编程论坛 C# 论坛

一段连接Sql的登录界面代码,总是弹出用户名密码错误

啡因 发布于 2016-06-26 11:20, 3340 次点击
程序代码:
  private void btnLogin_Click(object sender, EventArgs e)
        {
           
            if (this.txtUserName.Text.Trim() == "")
            {
                MessageBox.Show("用户名不能为空", "提示");
                return;
            }

            //连接字符串
            string str = "server=localhost;database=addressBook;uid=sa;pwd=123456";

            //连接对象
            SqlConnection con = new SqlConnection();
            con.ConnectionString = str;

            //打开数据库
            con.Open();

            //执行命令
           
           
// cmd.Connection = con;
         
            DataSet ds = new DataSet();        
            String st = "select User,Password from users where  User='"+txtUserName.Text.ToString().Trim()+"' and PassWord='"+txtPassword.Text.ToString().Trim()+"'";     
            SqlCommand cmd = new SqlCommand(st, con);
            SqlDataReader dr = cmd.ExecuteReader();
            try
            {

                if (dr.Read())
                {
                    this.Hide();
                    MainForm frm = new MainForm();
                    frm.Show();
                 }
                  
            
                else
                {
                    MessageBox.Show("账号和密码错误,请重新输入!", "提示");
                    txtPassword.Text = "";
                    this.Focus();
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
            finally
            {
               
                cmd.Dispose();
                con.Dispose();
            }
        }
2 回复
#2
啡因2016-06-26 11:21
数据库中有数据,输入的用户名和密码也是正确的,可是就是提示登录名和密码错误,这是为什么?
#3
月夜枫华2016-06-28 10:57
1、你用F11单步调试一下,当执行到你生成SQL语句的时候,生成的SQL语句是什么。放到数据库的查询分析器中是否能够执行?
2、数据库有自己的语句规则,建表时不应直接使用User,Password,Users这样的字段名称,可能会跟系统中已有的表相冲突。
3、SQLSERVER中不区分大小写,如果表中的密码是Abc但如果这样查询输入密码abc是会允许通过的。
1