在开始之前,我应该提一下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);
}
答案 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); 然后,如果返回零行,则登录失败,但您不知道它是否在用户名或密码上