Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用Access数据库在Visual Studio 2013中登录表单_C#_Asp.net_Visual Studio_Ms Access_Visual Studio 2013 - Fatal编程技术网

C# 使用Access数据库在Visual Studio 2013中登录表单

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

我正在尝试在C Visual Studio 2013中创建一个使用MS Access DB的登录表单。当我点击登录按钮时,无论我在密码部分键入什么,它都会显示密码正确,登录成功

代码如下:

    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参数而不是文本框的内容。我按照你说的改变了字符串。建造成功了。