最初に投稿してください。まず、このサイトの存在を感謝します。フォームに導入されたユーザーとパスワードがSQLデータベースに存在するかどうかを調べる
今私は、ユーザーのログインが必要なプロジェクト(C#)を作っています。プロファイルはSQLベースに格納されており、ログインを許可するには資格情報(ユーザー/パス)が正しいかどうかを確認する必要があります。
私は非常にSQLを理解していますので、間違いがないようにしてください。
フォームは非常にうまく動作しています。何がうまくいかないのは、私のデータベースのデータチェックです。
パブリックブールValidacaoLogin(文字列のユーザー、文字列のパス)
cn.Open();
cmd = new SqlCommand("select * from BDPerfil left join BDPerfilTecnico on BDPerfil.USER = BDPerfilTecnico.USER where BDPerfil.USER = @USER;", cn);
cmd = new SqlCommand("select * from BDPerfil where NIF = '" + user + "' AND PASSWORD = '" + pass + "';", cn);
cmd.Parameters.AddWithValue("@USER", user);
cmd.Parameters.AddWithValue("@PASSWORD", pass);
dr = cmd.ExecuteReader();
if (dr.HasRows)
{
while (dr.Read())
{
if ("@USER" == user)
{
if ("@PASSWORD" == pass)
dr.Close();
cn.Close();
return true;
}
}
}
dr.Close();
cn.Close();
return false;
}
私は別のプロファイルを格納するための2つのテーブルがあります:私は、フォームには、次の関数を呼び出すのログイン押したときに、BDPerfilTecnicoとBDPerfilAssistをので、私は自分の欲しいですBDPerfilAssistを使用する必要はありませんが、私のすべてのテストプロファイルはBDPerfilTecnico上にあるので、私はプログラムを両方とも(結合を通じて)チェックします。
ヘルプ? ありがとうございます。
この方法でパスワードを確認すると、クリアテキストとして保存されます。通常これは嫌にされます(軽く置くために) –
与えられたユーザー名とパスワードを持つ行だけを取得します。したがって、行=未知の組み合わせはありません。任意の行=成功。行をもう一度チェックする必要はありません( 'if(" @USER "== user)など)。 –
@Hans Kesting "パスワードをこのようにチェックすると、クリアテキストとして保存されていることを意味します。通常は気をつけます(軽く置く)" 私は知っています。しかし、これはクラスのためであり、私たちはデータを暗号化する方法について教えられていないので、これで十分です。 私はあなたが言ったことをかなり得ていませんでした。これは、 "@USER" ==ユーザと "@PASSWORD" == passのブール値を行う必要はないということですか? –