1

我有一个ClientsTable这样的:

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

我想同时获取每一行的 theuserName和 thepassword并使用我的方法的给定参数对其进行验证:

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;

} 

但是根据我当前的查询,我只能得到一个字段。

如何检索两个字段?

4

7 回答 7

3

为什么不使用

select username, password from clientstable

? 然后你的ResultSet审讯是:

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

首先,我建议使用 API 来构建查询,而不是执行原始查询(看看这里)。

但是要回答您的问题-如果您还想获得密码,请使用:

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

或者,您可以从结果中检查记录数:

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

这里的结果只有 0 和 1 :) 因为我假设username是唯一的。

但如果您想检索usernamepassword,只需选择查询中的两列。

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

您可以要求更多这样的字段:SELECT userName, password FROM ClientsTable

然后使用resultSet.getString(1)foruserNameresultSet.getString(2)forpassword

于 2012-08-06T08:28:58.170 回答
1

将您的 sql 更改为 "SELECT userName, passwordFROMClientsTable

现在您可以使用结果集对象并获取值
results.getString(1)
results.getString(2)

或者您可以使用 fieldName results.getString("userName"); results.getString("密码");

于 2012-08-06T09:03:19.200 回答
1

你的查询是错误的。您的查询应该是这样的:-

SELECT EMP_NAME,EMP_PASSWORD FROM EMP_DETAILS TABLE;

不仅检索 2 个字段而且检索任意数量的字段非常简单。

于 2012-08-06T09:17:45.083 回答