检查SQL数据库中是否存在表单中引入的用户和密码

时间:2017-05-28 17:46:31

标签: sql c#-4.0 visual-studio-2015

首先在这里发帖,首先,感谢这个网站的存在,因为它到目前为止帮助了我很多。

现在我正在制作一个需要用户登录的项目(C#)。配置文件存储在SQL基础上,我需要检查凭据(用户/通行证)是否正确以允许登录。

我对SQL很少了解,请稍等我的错误。

表单工作得很好。什么不起作用是我的数据库上的数据检查。因此,当我按下登录时,表单调用以下函数:

public bool ValidacaoLogin(string user,string pass)

        cn.Open();
        cmd = new SqlCommand("select * from BDPerfil left join BDPerfilTecnico on BDPerfil.USER = BDPerfilTecnico.USER where BDPerfil.USER = @USER;", cn);
        cmd = new SqlCommand("select * from BDPerfil where NIF = '" + user + "' AND PASSWORD = '" + pass + "';", cn);
        cmd.Parameters.AddWithValue("@USER", user);
        cmd.Parameters.AddWithValue("@PASSWORD", pass);
        dr = cmd.ExecuteReader();
        if (dr.HasRows)
        {
            while (dr.Read())
            {
                if ("@USER" == user)
                {
                    if ("@PASSWORD" == pass)
                        dr.Close();
                    cn.Close();
                    return true;
                }
            }
        }
            dr.Close();
            cn.Close();
            return false;
    }

我有2个表来存储不同的配置文件:BDPerfilTecnico和BDPerfilAssist所以我希望我的程序检查两者(通过连接)虽然现在我不需要使用BDPerfilAssist,因为我的所有测试配置文件都在BDPerfilTecnico上。

帮助? 提前谢谢。

2 个答案:

答案 0 :(得分:0)

至少,您需要查询中的参数。我希望:

    cmd = new SqlCommand("select * from BDPerfil where NIF = @USER AND PASSWORD = @PASSWORD'", cn);

您正在使用查询参数的良好路径。你只需要在查询中使用它们。

注意:代码中可能还有其他问题。

答案 1 :(得分:0)

返回的结果将在dr变量中,并取决于表中的列。而不是*你应该列出你想要的表列,即用户,密码。然后你可以使用dr变量来获取这些值,使用dr.getString(0)这样的语句获取用户,使用dr.getString(1)获取密码。代码中的查询不会更改变量user和password。文字字符串“@user”和“@password”也不会出现在查询中,所以我不知道为什么要与它们进行比较。相反,你想做类似的事情。如果(dr.getString(0)== user)

请加密数据库中的密码。您可以加密用户输入的内容并将加密密码与加密密码进行比较。

祝你好运