我有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;
}
但是根据我当前的查询,我只能获得一个字段。
如何检索两个字段?
答案 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
是唯一的。
但是如果您想要检索username
和password
,只需在查询中选择两列。
SELECT `userName`, `password`
FROM `ClientsTable`
答案 4 :(得分:1)
您可以要求更多字段:SELECT userName, password FROM ClientsTable
然后将resultSet.getString(1)
用于userName
,将resultSet.getString(2)
用于password
答案 5 :(得分:1)
将您的sql更改为“SELECT userName
,password
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个字段,还可以检索任意数量的字段。