【问题标题】:Check Database for username or password OledDb Connection检查数据库的用户名或密码 Oledb Connection
【发布时间】:2013-07-26 12:50:36
【问题描述】:

我正在尝试检查我已连接到我的程序的数据库以获取用户名和密码,我已经进行了查询,但是我将如何根据表检查它。

    private void button1_Click(object sender, EventArgs e)
    {
        Menu m1 = new Menu();
        string connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=UserAccounts.accdb; Persist Security Info=False;";
        OleDbCommand cmd = new OleDbCommand("Select * from UserAccounts where Username = " +userBox.Text + " and Password] = " + Password.Text + "");
        using (OleDbConnection conn = new OleDbConnection(connectionString))
        {
            try
            {
                conn.Open();
                this.Hide();
                m1.Show();
            }
            catch (Exception exc)
            {
                MessageBox.Show(exc.Message);
            }
        }
    }

【问题讨论】:

  • 你能用英语更好地解释你想要做什么吗?
  • 我有包含用户名和密码的 Microsoft Access 文件。我正在尝试检查用户在用户名和密码字段中输入的内容,以查看他们是否在数据库中,如果他们有正确的用户名和密码@Avitus,则允许他们访问
  • 天哪。另一个超级不安全和密码泄露的家庭滚动系统:-/ 无论如何,Password] 是无效的 SQL 语法。也尝试使用[。然后查找“准备好的语句”.. 然后您实际上会想要查询数据库(运行命令)并对结果做一些事情。
  • 在您的 OleDbCommand 对象上使用 OleDbParameters。
  • @LarsTech 我已经走到这一步了,我如何在 if 语句中检查它?试试 { conn.Open(); OleDbCommand cmd = new OleDbCommand(query,conn); cmd.Parameters.AddWithValue("用户名", userBox.Text); cmd.Parameters.AddWithValue("密码", Password.Text); cmd.ExecuteNonQuery(); this.Hide(); m1.显示(); }

标签: c# .net ado.net


【解决方案1】:

你已经很接近了,让我们稍微修改一下:

private void button1_Click(object sender, EventArgs e)
{
    Menu m1 = new Menu();
    string connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=UserAccounts.accdb; Persist Security Info=False;";
    using (OleDbConnection conn = new OleDbConnection(connectionString))
    {
        try
        {
            conn.Open();
            using (OleDbCommand cmd = new OleDbCommand("Select * from UserAccounts where Username = @Username and Password = @Password"))
            {
                cmd.Parameters.AddWithValue("@Username", userBox.Text);
                cmd.Parameters.AddWithValue("@Password", Password.Text);

                using (OleDbDataReader r = cmd.ExecuteReader())
                {
                    if (r.HasRows)
                    {
                        // do something here
                    }
                }
            }
            this.Hide();
            m1.Show();
        }
        catch (Exception exc)
        {
            MessageBox.Show(exc.Message);
        }
    }
}

【讨论】:

    【解决方案2】:

    如果你只是想检查用户名和密码是否存在,你可以这样做

    public bool IsValid(string username, string password)
            {
                string connectionString = @"...connectionstring";
    
    
                string SQL = "SELECT * FROM UserAccounts where [Username]='" + username + "' and [Password]='" + password + "'";
    
                OdbcConnection conn = new OdbcConnection(connectionString);
    
                OdbcCommand cmd = new OdbcCommand(SQL);
                cmd.Connection = conn;
    
                conn.Open();
    
                OdbcDataReader reader = cmd.ExecuteReader();
    
                if (reader.HasRows)
                {
                    return true;
                }
    
                return false;
            }
    

    【讨论】:

      猜你喜欢
      • 2010-12-12
      • 1970-01-01
      • 1970-01-01
      • 2012-07-17
      • 2013-11-25
      • 2012-08-29
      • 1970-01-01
      • 2014-04-02
      • 1970-01-01
      相关资源
      最近更新 更多