0

以下のコードを実行すると問題が発生します。ユーザー名とパスワードが真の場合、「無効なユーザーです。有効なユーザー名とパスワードで再試行してください」というメッセージが表示されます。偽のユーザー名とパスワードを入力しても、何も起こりません (まだ次のフォームに進むことはできません)。

private bool CompareStrings(string string1, string string2)
    {
        return String.Compare(string1, string2, true, System.Globalization.CultureInfo.InvariantCulture) == 0 ? true : false;
    }

    private void button1_Click(object sender, EventArgs e)
    {
        try 
        {
            SqlConnection con = new SqlConnection();
            con.ConnectionString = "Server = blabla; Database = MoinMoun; User Id = Aema; password = 12345";
            con.Open();

            //SqlCommand cmd = new SqlCommand("SELECT username,password FROM Admin WHERE username='" + txtusername.Text + "' and password='" + txtpassword.Text + "'", con);SELECT ISNULL(username,'') AS username, ISNULL(password,'') AS password FROM Admin WHERE username = '" + txtusername.Text + "' and password='" + txtpassword.Text + "'", con


            SqlCommand cmd = new SqlCommand("SELECT username,password FROM Admin WHERE username='" + txtusername.Text + "' and password='" + txtpassword.Text + "'", con);

            SqlDataReader dr = cmd.ExecuteReader();

            string usertext = txtusername.Text;
            string passtext = txtpassword.Text;

            while(dr.Read())
            {

                if(this.CompareStrings(dr["username"].ToString(), usertext) &&
                    this.CompareStrings(dr["password"].ToString(), passtext))
                {
                    Form2 frm = new Form2();
                    frm.Show();
                    this.Hide();                        
                }
                else
                {       
                    MessageBox.Show("Invalid User! Try again with VALID username and password");                        
                }
            }
            dr.Close();
            con.Close();
        }
        catch(Exception ex)
        {
            MessageBox.Show(ex.Message);

        }
    }
4

3 に答える 3

0

同様にSQLパラメーターソリューションに移行することに同意し、トリムメソッドを使用して入力テキストと余分な空白をトリミングすることにも同意します。

また、compareStrings メソッド コードなど、より多くの情報が必要だと思います。文字列を比較するときは、.equals() メソッドまたは String.Compare() を使用します。例えば

Usertxt.equals(dr["username"].ToString());
String.Compare(usertxt,Dr["username"].ToString(),false);
于 2013-04-16T04:41:37.663 に答える