C# 使用Access数据库在Visual Studio 2013中登录表单
我正在尝试在C Visual Studio 2013中创建一个使用MS Access DB的登录表单。当我点击登录按钮时,无论我在密码部分键入什么,它都会显示密码正确,登录成功 代码如下:C# 使用Access数据库在Visual Studio 2013中登录表单,c#,asp.net,visual-studio,ms-access,visual-studio-2013,C#,Asp.net,Visual Studio,Ms Access,Visual Studio 2013,我正在尝试在C Visual Studio 2013中创建一个使用MS Access DB的登录表单。当我点击登录按钮时,无论我在密码部分键入什么,它都会显示密码正确,登录成功 代码如下: private void signin_Click(object sender, EventArgs e) { String username = user.Text; String password = user.Text; String te
private void signin_Click(object sender, EventArgs e)
{
String username = user.Text;
String password = user.Text;
String temp = null;
Int32 res = 0;
OleDbConnection conn = new OleDbConnection();
conn.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\AADHARSH\DS\ASP.NET\logindb.mdb;Persist Security Info=False;";
conn.Open();
OleDbCommand cmd = new OleDbCommand();
cmd.Connection=conn;
cmd.CommandText="SELECT Password FROM UserTable WHERE Username='"+username+"'";
OleDbDataReader reader = cmd.ExecuteReader();
if(reader.Read())
{
result.Text = "Password Correct. Login Succesful";
}
else
{
result.Text="Password field cannot be blank";
}
conn.Close();
}
您没有根据数据库检查密码。更改查询,使其使用UserTable中的SELECT*,其中Username=?密码=?;假设您将使用文本框而不是文本框的内容,文本框将打开您的代码进行SQL注入 此外,请在以下行检查代码:
String username = user.Text;
String password = user.Text;
您对用户名和密码使用了相同的文本框值,您可能应该有pass。这里的Text您是否调试了代码并看到数据读取器有数据?而且您在命令中从不使用“密码”。这就是为什么它不重要。您只需检查您的用户名。你也应该经常使用。这种字符串连接可能受到攻击。问题仍然存在。是否向查询中添加了参数?检查@Prasanna的答案。这是一个完整的源代码,看起来不错,可能是从某个地方复制的,因为表格不同,文本框中没有你的名字,但其他一切看起来都是正确的。现在检查编辑的答案你是对的。我使用OLEDB参数而不是文本框的内容。我按照你说的改变了字符串。建造成功了。