如何使此C#登录表单区分大小写?

时间:2018-03-20 16:21:13

标签: c#

private void buttonLogin_Click(object sender, EventArgs e)
{
    SqlConnection sqlcon = new SqlConnection(@"Data Source=(LocalDB)\v11.0;AttachDbFilename=C:\Users\sesha\Documents\Visual Studio 2013\Projects\Achievers - Grocery Management System\Login Database\Login DB.mdf;Integrated Security=True;Connect Timeout=30");
    string query = "Select * from [Table] where username = '" + textBoxUsername.Text.Trim() + "' and password = '" + textBoxPassword.Text.Trim() + "'";
    SqlDataAdapter sda = new SqlDataAdapter(query, sqlcon);
    DataTable dt = new DataTable();
    sda.Fill(dt);

    if (dt.Rows.ToString() == "1")
    {
        Dashboard objDashboard = new Dashboard();
        this.Hide();
        objDashboard.Show();
    }
    else
    {
        MessageBox.Show("Check your username and password");
    }
}

2 个答案:

答案 0 :(得分:0)

如果您无法控制数据库的创建方式

仅使用用户名

查询数据库

使用字段填充数据表

使用您的数据表中的值进行比较String.compare (记得在保存并哈希输入以进行比较之前哈希密码)

答案 1 :(得分:0)

如果是您发布的代码,而不是仅仅依靠SQL WHERE子句中的比较来检查您,如果找到匹配的行,那么您可以使用重新检查输入的值与passwordDataTable)的dt列的值进行区分大小写的比较。

如果密码以散列格式存储在数据库中,则散列算法将处理区分大小写,因为输入值的任何差异都会导致不同的散列值。正如许多评论所述,在存储密码时,密码绝不应以纯文本形式存储。至少应该对密码进行哈希处理,最好在进行哈希处理之前对其进行腌制。

最后,如果您有权对数据库本身进行更改,则可以查看更改数据库排序规则。默认情况下,SQL Server使用不区分大小写的排序规则。有关详细信息,请阅读https://docs.microsoft.com/en-us/sql/t-sql/statements/collations(正如Tim在您的问题上所评论的那样)。