2016-04-08 14 views
-1

私はC#とビジュアルスタジオが新しく、ログインするためにユーザー名とパスワードが必要なWindowsフォームアプリケーションを作成しています。ユーザー登録のためにデータベースを正常に実装しましたが、ログインが機能するようにしてください。 2個の以下のコードにエラーがあります:妥当性確認ユーザー名とパスワードをC#

private void btnLogin_Click(object sender, EventArgs e) 
{ 
    MySqlConnection con = new MySqlConnection(); 
    con.ConnectionString = "datasource=127.0.0.1;port=3306;username=root;password=;"; 

    Int32 verify; 
    string query1 = "Select count(*) from Login where Username='" + Username.Text + "' and Password='" + Password.Text + "' "; 
    MySqlCommand cmd1 = new MySqlCommand(query1, con); 
    con.Open(); 
    verify = Convert.ToInt32(cmd1.ExecuteScalar()); 
    con.Close(); 

    if (verify > 0) 
    { 
     new FormMainMenu().Show(); 
     this.Hide(); 
    } 
    else 
    { 
     MessageBox.Show("Username or Password is Incorrect") 
    } 
} 

Username.TextPassword.Textは下線と名前

は現在のコンテキスト内に存在しないと言うている両方。

誰かがこれに対する解決策を持っていれば、私は非常に感謝しています。ありがとう

+7

**警告**あなたのコードはSQLインジェクション攻撃に対して非常に脆弱で、パスワードをプレーンテキストで保存しないでください! –

+0

私は知っている、これは単なる練習であり、最初にそれを行う方法を知りたいと思います。なぜあなたはこれがうまくいかないのかという解決策があれば – JanetKeelan

+1

これはパスワードの使い方ではなく、間違ったことをやっている練習です。データベースに[パスワードハッシュ](https://bcrypt.codeplex.com/)を格納し、ユーザーからパスワードをハッシュして[データベースパラメータ]に渡します(http://stackoverflow.com/questions/11139791)。 /)。 –

答えて

0

これを試すことができます、あなたはMYSQLコネクタへの接続を変更するだけです。

public int GetScalarValue() 
     { 
      int result = 0; 
      using (SqlConnection cn = new SqlConnection("CONECTION_STRING")) 
      { 
       cn.Open(); 
       using (SqlCommand cmd = new SqlCommand("select count(*) from login where [email protected] and [email protected]")) { 
        cmd.Parameters.Add("@login", SqlDbType.VarChar).Value = Username.Text; 
        cmd.Parameters.Add("@password", SqlDbType.VarChar).Value = Password.Text; 
        result = int.Parse(cmd.ExecuteScalar().ToString()); 
       } 
      } 
      return result; 
     }