0

重複の可能性:
プログラムで予期しない出力が発生する

率直に言って、この質問はばかげているかもしれませんが、私は Java の初心者です。
これは私のテーブルemp(name,id,address,date)です。

ここで、特定の従業員の対応するパスワードを照合します。

String sql = "select emp_id,password from regid";
ResultSet rs = st.executeQuery(sql);

while(rs.next()){
 // here will be iterate function using resultset,i guess
 // what should be the best logic to check the name and password...any inputs
 //in terms of code

if(if (employee.equals(rs.getString("emp_id")) && password.equals(rs.getString("password")))){
You are Mr. emp // in terms of code
}

else{
Who are You ?? //in terms of code
}
}

どんな入力も高く評価されます。

4

5 に答える 5

3

すべての従業員のデータを選択し、一致するものを探しています。

データベースでフィルタリングする方がはるかに優れています。

select count(*)  from regid where emp_id = ? and password = ?

次に、これが 0 または 1 を返すかどうかを確認するだけで済みます。

また、passwordできれば単なるパスワード ハッシュです。

于 2012-09-28T07:02:19.193 に答える
3

PreparedStatementを使用してクエリを作成します。したがって、PreparedStatementのパラメーター化されたクエリは次のようになります。

SELECT * from regid WHERE emp_id = ? AND password = ?

パラメータ値をプラグインして、ステートメントを実行します。したがって、次のようになります。

PreparedStatement ps = null;
ResultSet rs = null;
boolean validUser = false;

try{
    ps = connection.prepareStatement("SELECT * from regid WHERE emp_id = ? AND password = ?");
    ps.setString(1, [user_id_input]);
    ps.setString(2, [user_pw_input]);
    rs = ps.executeQuery();

    validUser = rs.next();
}finally{
    //Release your resources
}

if(validUser){
    //user is validated
}

補足として、クエリに入力する前に、ユーザーの入力を検証することもお勧めします。

于 2012-09-28T07:02:35.710 に答える
2

データベースからすべてのデータを取得すると、アプリケーションのパフォーマンスが低下するため、次のクエリを実行して 1 つのレコードを取得します。

boolean status = false;
String emp_name = "";
String emp_password = "";
String sql = "select * from regid where emp_id='"+emp_id+"' AND password='"+password+"'";
ResultSet rs = st.executeQuery(sql);
while(rs.next()){
    if(emp_id.equals(rs.getString("emp_id")) && password.equals(rs.getString("password")))
    {
            // fetch employee data
            status = true;
    }
}
if(status)
{
        // login correct
}
else
{
        // login incorrect
}
于 2012-09-28T07:16:30.343 に答える
1

データベースにクエリを実行します"select emp_id,password,... from regid where emp_id=? and password=?"

PreparedStatement を作成し、emp_id とパスワードを設定します。emp_id とパスワードが一致すると、1 行が返されます。

于 2012-09-28T07:02:51.940 に答える
1

実際には、結果セットのパスワードを一致させるべきではありません。SQLクエリは次のようになります

select emp_id from regid where password='userpassword'

userpassword は、使用している画面から取得したパスワードです

于 2012-09-28T07:03:08.073 に答える