如何使用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&选择,用于提及密码加密的重要性。