使用数据访问对象在我的sql中获取数据

问题描述 投票:0回答:1

我们被要求从我们创建的数据库中获取数据。因此,我的数据库有四列,它们的字段名称是:id、firstname、lastname 和 email。 mySql database

我获取其他数据没有问题,但我很难通过电子邮件获取数据。

这是实现我的界面的代码。

我应该通过他们的电子邮件获取数据。

这是实现我的接口的代码

@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获取数据,但是这个不起作用。

有什么办法可以解决这个问题吗?

java mysql jdbc dao data-access-object
1个回答
0
投票

我看到你正在使用

preparedStatement.setString(1, email);

由于您想要与字符串值相等 - like 是需要使用的正确运算符。

将您的查询修改为:

"SELECT * FROM users WHERE email like ?"
© www.soinside.com 2019 - 2024. All rights reserved.