그래서, 사용자가 mainform에 들어가기 위해 로그인해야하는 loginform이 있습니다. 응용 프로그램에 로그인하기 위해 사용자 이름과 암호를 저장하기 위해 만든 테이블이있는 데이터베이스가 있습니다.로그인 폼에 대한 SQL 데이터베이스의 다중 사용자
사용자가 올바른 사용자 이름과 암호를 입력하고 로그인을 클릭하면 해당 사용자가 메인 폼으로 이동해야합니다. 이 방법을 알고 있지만 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#을 처음 접했습니다. 미리 감사드립니다. 점에서
SQL에 문자열을 연결하는 대신 SQL 매개 변수를 사용하십시오. 암호를 일반 텍스트로 저장하지 마십시오. 그리고 예외가 있다면 전체 오류 메시지를 공유하십시오. – Plutonix
먼저 Sql Injection을 읽어보십시오. 둘째, 암호화에 대해 읽어보십시오. 셋째, C#의'using' 키워드를 읽습니다. – mxmissile
'if (con.State == ConnectionState.Open)'연결이 열려 있지 않으면 예외가 발생합니다. –