2016-08-19 3 views
-2

私は自分のアプリケーションに入っているユーザをチェックしようとしています。私はそれぞれ 'mydb'、 'employee'という名前のデータベースとテーブルを作成しました。私はテーブルの従業員のuname列とpasword列にユーザー名とパスワードを入力しました。私がしたいのは、ユーザーが入力したユーザー名とパスワードが有効かどうかです。それはテーブルの従業員に存在するかどうかを意味しますか?はいの場合はアクセスを許可し、そうでない場合はアクセスを拒否します。この目的のために 私はVisual Studio 2013究極を使用して私のC#ウィンドウフォームアプリケーションで次のコードを書いています。mysqlサーバ5.7.14とworkbench 6.3とc#windowフォームアプリケーションを使用してログインを作成する

try 
{ 
    string myconnection = "datasource=localhost; port=3306; username=root; password=shaban; "; 
    MySqlCommand selectcommand = new MySqlCommand(" slect * from mydb.employee where uname= "+this.username_txt.Text+" and pasword = "+this.pasword_txt.Text+"", myconn); 

    MySqlDataReader myreader; 
    myconn.Open(); 
    myreader = selectcommand.ExecuteReader(); 
    int count = 0; 
    while (myreader.Read()) 
    { 
     count = count + 1; 
    } 

    if (count == 1) 
    { 
     MessageBox.Show("username and pasword is correct"); 
    } 
    else if (count > 1) 
    { 
     MessageBox.Show("Duplicate username and password...! Access Denied "); 
    } 
    else 
    { 
     MessageBox.Show(" username and pasword not existing.. Try again"); 
    } 
    myconn.Close(); 
} 
catch (Exception ex) 
{  
    MessageBox.Show(ex.Message);  
} 
+1

'slect'これは主要なタイプミスです。そうでなければ、あなたの質問は "誤字"であるために閉じられるかもしれません。 –

+1

unameとpaswordがテキストフィールドの場合、値を正しく引用していませんが、これは有効な修正ではありません。なぜ、どのようにパラメータ化されたクエリを使用するのか理解してみてください – Steve

+0

'パラメータ化されたクエリ 'としてよく知られているパラメータを使ってクエリを構築する方法を読むと、コードを投稿する以外にも' SQL Injection is'も読み上げます。このコードの貧弱な書式設定を修正することは言うまでもありません。 – MethodMan

答えて

1

すべての最初のクエリのタイプミス「slect」 第二に、あなたのWHERE句で単一引用符を逃しているがあります。

where uname= '"+this.username_txt.Text+"' and pasword = '"+this.pasword_txt.Txt+"'"' 

これらのことが問題を解決するかどうかを教えてください。私たちは次の事を見るでしょう。

また、あなたが直面しているエラーや問題についても具体的に記述してください。

+0

ありがとうございました...!それは修正されました –

関連する問題