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

如何使用Java在Mysql中检索表的两个字段?,java,mysql,database,Java,Mysql,Database,我有一个像这样的ClientsTable: firstName lastName address idNumber userName password | | | | | david bowie here 123 mick jagger chuck norris there 456 steven seagal 我想获取每行的用户名和密码,并使用我方法

我有一个像这样的
ClientsTable

firstName lastName address idNumber userName password
         |        |       |        |        |
david      bowie    here    123     mick      jagger 
chuck      norris   there   456     steven    seagal
我想获取每行的
用户名
密码
,并使用我方法的给定参数进行验证:

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;

} 
但使用我当前的查询,我只能得到一个字段

如何检索两个字段

为什么不使用

select username, password from clientstable
??然后您的
ResultSet
查询是:

String username = results.getString("username");
String password = results.getString("password");
请参见
ResultSets
。请注意,我要求按列名获取结果。它比通过索引(数字)来请求它们更健壮。如果我更改SQL语句(重新排序查询参数),那么仍然会返回正确的列

我希望你没有在那些表中存储明文密码,顺便说一句!有关哈希和盐的更多信息,请参阅。

为什么不使用

select username, password from clientstable
??然后您的
ResultSet
查询是:

String username = results.getString("username");
String password = results.getString("password");
请参见
ResultSets
。请注意,我要求按列名获取结果。它比通过索引(数字)来请求它们更健壮。如果我更改SQL语句(重新排序查询参数),那么仍然会返回正确的列

我希望你没有在那些表中存储明文密码,顺便说一句!有关哈希和盐的更多信息,请参阅。

将查询更改为:

SELECT `userName`, `password` FROM `ClientsTable`
将查询更改为:

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

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

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

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

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

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

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

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

SELECT COUNT(*) 
FROM   `ClientsTable`
WHERE  userName = 'userHere' AND
       password = 'passHere'
这里的结果是0和1:),因为我假设
用户名是唯一的

但是如果要检索
用户名
密码
,只需选择查询中的两列即可

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

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

SELECT COUNT(*) 
FROM   `ClientsTable`
WHERE  userName = 'userHere' AND
       password = 'passHere'
这里的结果是0和1:),因为我假设
用户名是唯一的

但是如果要检索
用户名
密码
,只需选择查询中的两列即可

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

您可以要求更多类似这样的字段:
selectusername,passwordfromclientstable


然后将
resultSet.getString(1)
用于
userName
resultSet.getString(2)
用于
password
您可以要求更多类似这样的字段:
从ClientsTable中选择用户名、密码

然后将
resultSet.getString(1)
用于
userName
resultSet.getString(2)
用于
password
将sql更改为“选择
userName
password
来自
ClientsTable

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

也可以使用字段名进行检索 results.getString(“用户名”); 结果.getString(“密码”);

将sql更改为“从
ClientsTable
中选择
userName
password

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

也可以使用字段名进行检索 results.getString(“用户名”);
results.getString(“密码”)

您的查询是错误的。您的查询应该如下所示:-

SELECT EMP_NAME,EMP_PASSWORD FROM EMP_DETAILS TABLE;

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

您的查询是错误的。您的查询应该如下所示:-

SELECT EMP_NAME,EMP_PASSWORD FROM EMP_DETAILS TABLE;

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

在数据库中以明文形式存储密码是一种不好的做法。@MarkByers:好的,那么应该怎么做呢?加密?使用PBKDF2或bcrypt之类的东西@MarkByers:注意到了,非常感谢!在数据库中以明文形式存储密码是一种不好的做法。@MarkByers:好的,那么应该怎么做呢?加密?使用PBKDF2或bcrypt之类的东西@MarkByers:注意到了,非常感谢!好答案+1&选择,用于提及密码加密的重要性。好答案+1&选择,用于提及密码加密的重要性。