所以,我有一个登录表单,用户必须登录才能进入主表单。 我有一个数据库,其中创建了一个用于存储用户名和密码的表,用于登录应用程序。
如果用户键入正确的用户名和密码并单击登录,则应将他/她带到主窗体。我知道该怎么做,但是如何从SQL数据库中获取用户名和密码并检查它们是否存在,如果存在,是正确的密码用户名,反之亦然?
就像我说的,我创建了一个SQL数据库来存储用户名和密码。 然后,我将用户名和密码保存为" admin",仅用于测试目的。
我尝试了以下代码,但即使输入了正确的用户名和密码,也不能让我登录。
string username;
string password;
private void btnLogin_Click(object sender, EventArgs e)
{
try
{
SqlCeConnection con = new SqlCeConnection(@"connectionString");
SqlCeCommand com = new SqlCeCommand("SELECT username, password FROM UsersPass WHERE username = '" + txtUsername.Text + "' AND password = '" + txtPassword.Text + "'", con);
con.Open();
if (con.State == ConnectionState.Open)
{
SqlCeDataReader dtr = com.ExecuteReader();
while (dtr.Read())
{
username = dtr["username"].ToString();
password = dtr["password"].ToString();
if (username == txtUsername.Text && password == txtPassword.Text)
{
Mainform frm = new Mainform();
frm.Show();
this.Hide();
}
else
{
MessageBox.Show("Invalid credentials!\nPlease enter a valid username and password to continue.", "Login Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
}
catch (Exception)
{
MessageBox.Show("Erorr", "Error");
}
}
请原谅我,如果我错过了一些完全明显的东西,我对C#来说还是比较新的。 提前谢谢。
答案 0 :(得分:1)
您说您收到错误消息。首先给自己提供更多相关信息。在
中放置一个断点catch (Exception)
{
MessageBox.Show("Erorr", "Error");
}
因此您可以查看有关异常的一些详细信息或将其更改为
catch (Exception ex)
{
MessageBox.Show("Erorr", ex.Message + Environment.NewLine + ex.StackTrace);
}
这将为您提供有关您的应用程序失败的确切原因的详细信息,并为您提供让您按需工作的途径。
我怀疑你的连接字符串不正确。
编辑:此特定问题是由用于代替标准版引用的sql server精简版引用引起的。见评论。
答案 1 :(得分:0)
只是另一种方式:
private void btnLogin_Click(object sender, EventArgs e)
{
string currentUserID=string.Empty;
SqlConnection connection= new SqlConnection(connectionString);
connection.Open();
SqlCommand command = new SqlCommand();
command.CommandText = "SELECT UserID From UserPass WHERE username =@username AND password =@password";
command.Parameters.AddWithValue("@username", txtUsername.Text);
command.Parameters.AddWithValue("@password", txtPassword.Text);
command.Connection = connection;
object obj=command.ExecuteScalar();
if (obj!=null)
{
currentUserID= obj.ToString();
connection.Close();
Mainform frm = new Mainform();
frm.Show();
this.Hide();
}
else
{
connection.Close();
MessageBox.Show("Invalid credentials!\nPlease enter a valid username and password to continue.", "Login Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}