我们被要求从我们创建的数据库中获取数据。因此,我的数据库有四列,它们的字段名称是:id、firstname、lastname 和 email。
我获取其他数据没有问题,但我很难通过电子邮件获取数据。
这是实现我的界面的代码。
我应该通过他们的电子邮件获取数据。
这是实现我的接口的代码
@Override
public User getByEmail(String email) {
String fetchDataQuery = "SELECT * FROM users WHERE email = " + email;
User user = new User();
System.out.println(fetchDataQuery);
try (Connection connection = DriverManager.getConnection(URL, USERNAME, PASSWORD);
PreparedStatement preparedStatement = connection.prepareStatement(fetchDataQuery)) {
preparedStatement.setString(1, email);
try (ResultSet resultSet = preparedStatement.executeQuery()) {
if (resultSet.next()) {
user.setId(resultSet.getInt("id"));
user.setFirstname(resultSet.getString("firstname"));
user.setLastname(resultSet.getString("lastname"));
user.setEmail(resultSet.getString("email"));
}
}
} catch (SQLException e) {
e.printStackTrace();
}
return user;
}
这是上面代码的入口点
package org.example;
公共类入口点{ 公共静态无效主(字符串[] args){
UserDaoImpl dao = new UserDaoImpl();
User user = dao.getByEmail("[email protected]");
System.out.println(user.getId());
System.out.println(user.getFirstname());
System.out.println(user.getLastname());
System.out.println(user.getEmail());
我所做的只是简单地按照我遵循的代码使用ID获取数据,但是这个不起作用。
有什么办法可以解决这个问题吗?
我看到你正在使用
preparedStatement.setString(1, email);
由于您想要与字符串值相等 - like 是需要使用的正确运算符。
将您的查询修改为:
"SELECT * FROM users WHERE email like ?"