私は自分のアプリケーションに入っているユーザをチェックしようとしています。私はそれぞれ '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);
}
'slect'これは主要なタイプミスです。そうでなければ、あなたの質問は "誤字"であるために閉じられるかもしれません。 –
unameとpaswordがテキストフィールドの場合、値を正しく引用していませんが、これは有効な修正ではありません。なぜ、どのようにパラメータ化されたクエリを使用するのか理解してみてください – Steve
'パラメータ化されたクエリ 'としてよく知られているパラメータを使ってクエリを構築する方法を読むと、コードを投稿する以外にも' SQL Injection is'も読み上げます。このコードの貧弱な書式設定を修正することは言うまでもありません。 – MethodMan