1

私はそのClientsTableようなものを持っています:

firstName lastName address idNumber userName password
         |        |       |        |        |
david      bowie    here    123     mick      jagger 
chuck      norris   there   456     steven    seagal

各行のuserNameと の両方を取得し、メソッドの指定されたパラメーターで検証したい:password

public Person verifyClientExists(String username,String password) throws SQLException
{

    ResultSet results = this.m_statement.executeQuery("SELECT `userName` FROM `ClientsTable`");  
    while (results.next() == true)
    {
        // here I want to compare the retrieved data from 
                    // mysql with the "username" and "password" given in the prototype
    }



    return null;

} 

しかし、現在のクエリでは、フィールドを1 つしか取得できません。

2 つのフィールドを取得するにはどうすればよいですか?

4

7 に答える 7

3

Why not use

select username, password from clientstable

? And then your ResultSet interrogation is:

String username = results.getString("username");
String password = results.getString("password");

の JDBC チュートリアル ページを参照してくださいResultSets。列名で結果を求めることに注意してください。インデックス (数値) でそれらを要求するよりも、わずかに堅牢です。SQL ステートメントを変更しても (クエリ パラメータを並べ替える)、正しい列が返されます。

これらのテーブルにクリアテキストのパスワードを保存していないことを願っています。ハッシュとソルトの詳細については、こちらを参照してください。

于 2012-08-06T08:26:51.880 に答える
2

クエリを次のように変更します。

SELECT `userName`, `password` FROM `ClientsTable`
于 2012-08-06T08:26:55.320 に答える
1

次のようなフィールドをさらに要求できます。SELECT userName, password FROM ClientsTable

次に、resultSet.getString(1)foruserNameresultSet.getString(2)for を使用しますpassword

于 2012-08-06T08:28:58.170 に答える
1

SQLを「SELECT userNamepasswordFROM 」に変更しますClientsTable

これで、結果セット オブジェクトを使用して値をフェッチできるようになりました
results.getString(1)
results.getString(2)

または、fieldName results.getString("userName"); を使用して取得できます。results.getString("パスワード");

于 2012-08-06T09:03:19.200 に答える
1

または、結果からレコード数を確認できます。

SELECT COUNT(*) 
FROM   `ClientsTable`
WHERE  userName = 'userHere' AND
       password = 'passHere'

ここでの結果は 0 と 1 のみになります:)usernameは一意であると想定しているためです。

usernameただし、とを取得する場合passwordは、クエリで 2 つの列を選択するだけです。

SELECT `userName`, `password` 
FROM `ClientsTable`
于 2012-08-06T08:28:24.847 に答える
1

あなたのクエリは間違っています。クエリは次のようになります:-

SELECT EMP_NAME,EMP_PASSWORD FROM EMP_DETAILS TABLE;

2つのフィールドだけでなく、任意の数のフィールドを取得するのは非常に簡単です。

于 2012-08-06T09:17:45.083 に答える
1

まず、生のクエリを実行するのではなく、API を使用してクエリを作成することをお勧めします (こちらをご覧ください)。

しかし、あなたの質問に答えるために - パスワードも取得したい場合は、次のように使用します。

ResultSet results = this.m_statement.executeQuery("SELECT `userName`, `password` FROM `ClientsTable`");  
于 2012-08-06T08:27:29.840 に答える