如何使用Java检索Mysql中表的两个字段?

时间:2012-08-06 08:24:47

标签: java mysql database

我有ClientsTable这样的话:

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

我希望获得每行的userNamepassword,并使用我方法的给定参数进行验证:

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;

} 

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

如何检索两个字段?

7 个答案:

答案 0 :(得分:2)

为什么不使用

select username, password from clientstable

?然后你的ResultSet审讯是:

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

请参阅ResultSets上的the JDBC tutorial page。请注意,我按列名称询问结果。它比通过索引(数字)要求它们更健壮。如果我更改了SQL语句(重新排序查询参数),那么仍然会返回正确的列。

我希望你不要在这些表格中存储明文密码,顺便说一下!有关散列和盐的详细信息,请参阅here

答案 1 :(得分:2)

将您的查询更改为:

SELECT `userName`, `password` FROM `ClientsTable`

答案 2 :(得分:1)

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

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

ResultSet results = this.m_statement.executeQuery("SELECT `userName`, `password` FROM `ClientsTable`");  

答案 3 :(得分:1)

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

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

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

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

SELECT `userName`, `password` 
FROM `ClientsTable`

答案 4 :(得分:1)

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

然后将resultSet.getString(1)用于userName,将resultSet.getString(2)用于password

答案 5 :(得分:1)

将您的sql更改为“SELECT userNamepassword FROM ClientsTable

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

或者您可以使用fieldName进行检索 results.getString( “userName的”); results.getString( “密码”);

答案 6 :(得分:1)

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

SELECT EMP_NAME,EMP_PASSWORD FROM EMP_DETAILS TABLE;

它不仅可以检索2个字段,还可以检索任意数量的字段。