让两个SQL Server数据库检查一次检查?

时间:2016-05-05 12:38:37

标签: c# sql-server

在开始之前,我应该提一下C#对我来说是一个新手,而且我仍然在掌握基础知识。

我在下面编写了此代码,以检查SQL Server数据库的用户名和密码。它可以工作并检测它们是否匹配,但我无法找到一种方法来检查它,在txtLogin和pwdPassword中对照用户名和密码列运行数据。

        SqlConnection cnn = null;
        SqlCommand cmd = null;
        SqlDataAdapter sda = null;
        DataTable Dt = new DataTable();

        cnn = new SqlConnection("Server=dbadmin01.database.windows.net;Database=dbadmin;User=info;Password=notGivingThis");
        cmd = new SqlCommand("SELECT username FROM users WHERE username =@TextboxValue", cnn);
        cnn.Open();
        cmd.CommandType = CommandType.Text;
        cmd.Parameters.Add("@TextboxValue", SqlDbType.VarChar).Value = txtUser.Text;
        sda = new SqlDataAdapter(cmd);
        sda.Fill(Dt);

        if (Dt.Rows.Count > 0)
        {
            //Works - do nothing for now
        }
        else
        {
            MessageBox.Show("Username is incorrect!", "Error", MessageBoxButton.OK, MessageBoxImage.Error);
        }

        cnn = new SqlConnection("Server=dbadmin01.database.windows.net;Database=dbadmin;User=info;Password=notGivingThis");
        cmd = new SqlCommand("SELECT passcode FROM users WHERE passcode =@PasswordValue", cnn);
        cnn.Open();
        cmd.CommandType = CommandType.Text;
        cmd.Parameters.Add("@PasswordValue", SqlDbType.VarChar).Value = pwdPassword.Password;
        sda = new SqlDataAdapter(cmd);
        sda.Fill(Dt);

        if (Dt.Rows.Count > 0)
        {
            //Works - Do nothing for now
        }
        else
        {
            MessageBox.Show("Password is incorrect!", "Error", MessageBoxButton.OK, MessageBoxImage.Error);
        }

2 个答案:

答案 0 :(得分:1)

只做

parse_color

然后在运行查询之前添加两个参数

仅供参考,您不需要为每个查询创建新连接。连接对象可以重复使用,只要它们不在运行另一个查询的过程中(除非您是多线程或出现问题,否则通常不会出现问题)。您还应关闭已打开和处理它们的连接(处置可能会关闭它们 - 检查文档)。命令对象也是IDisposables,应该是Disposed。您可以在声明对象时使用using关键字快速调用Dispose的需要(感谢@dlatikay在下面的注释中指出)

答案 1 :(得分:1)

cmd = new SqlCommand("select Username,passcode from users where username =@username",cnn);

填写数据表并执行行计数检查以验证用户名是否正确后,您无法使用

if (Dt.Rows[0]["passcode"].ToString()!=pwdPassword.Password)
{
    MessageBox.Show("Invalid Password");
    return;
}

这将进行用户名检查,然后单独进行密码检查,但使用一个查询。

您也可以使用     cmd = new SqlCommand(“选择用户名,来自用户的密码,其中username = @ username和密码= @Password”,cnn); 然后,如果返回零行,则登录失败,但您不知道它是否在用户名或密码上