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");
}
}
答案 0 :(得分:0)
如果您无法控制数据库的创建方式
仅使用用户名
查询数据库使用字段填充数据表
使用您的数据表中的值进行比较String.compare
(记得在保存并哈希输入以进行比较之前哈希密码)
答案 1 :(得分:0)
如果是您发布的代码,而不是仅仅依靠SQL WHERE
子句中的比较来检查您,如果找到匹配的行,那么您可以使用重新检查输入的值与password
(DataTable
)的dt
列的值进行区分大小写的比较。
如果密码以散列格式存储在数据库中,则散列算法将处理区分大小写,因为输入值的任何差异都会导致不同的散列值。正如许多评论所述,在存储密码时,密码绝不应以纯文本形式存储。至少应该对密码进行哈希处理,最好在进行哈希处理之前对其进行腌制。
最后,如果您有权对数据库本身进行更改,则可以查看更改数据库排序规则。默认情况下,SQL Server使用不区分大小写的排序规则。有关详细信息,请阅读https://docs.microsoft.com/en-us/sql/t-sql/statements/collations(正如Tim在您的问题上所评论的那样)。