请求处理失败;嵌套异常是java.sql.SQLException:无法使用executeQuery()发出数据操作语句

时间:2017-09-25 07:48:16

标签: spring jdbc

我是Spring框架的新手,我正在接受培训。正如我的TL所给出的那样,我试图通过在控制器中使用以下方法来完成将数据插入数据库表的任务。

  

创建一个控制器。 (UserController.java)

     

它应该有两个方法submit()和showAllUsers()

@RequestMapping(value = "/addUser", method = RequestMethod.POST)
public String submit(@Valid @ModelAttribute("user")User user, BindingResult result, ModelMap model) {
}

@RequestMapping(value = "/users", method = RequestMethod.GET)
public ModelAndView showAllUsers() {
    // ...
}

我完成了代码,但是我收到以下错误:

  

请求处理失败;嵌套异常是java.sql.SQLException:无法使用executeQuery()发出数据操作语句。

我的UserDaoImpl代码:

package com.baylogic.peoplecentral.dao.impl;

import java.sql.SQLException;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import org.springframework.jdbc.core.JdbcTemplate;

import javax.sql.DataSource;

import com.baylogic.peoplecentral.dao.UserDao;
import com.baylogic.peoplecentral.pojo.User;

public class UserDaoImpl implements UserDao {
    DataSource dataSource;

    public DataSource getDataSource() {
        return this.dataSource;
    }

    public void setDataSource(DataSource dataSource) {
        this.dataSource = dataSource;
    }

    public boolean createUser(String firstname, String lastname, int id, String email) throws SQLException {
        String query = "insert into user(firstname,lastname,id,email) values(?,?,?,?)";
        PreparedStatement pstmt = dataSource.getConnection().prepareStatement(query);
        pstmt.setString(1, firstname);
        pstmt.setString(2, lastname);
        pstmt.setInt(3, id);
        pstmt.setString(4, email);
        ResultSet resultSet = pstmt.executeQuery();
        if (resultSet.next())
            return (resultSet.getInt(1)>0);
        else
            return false;
    } 
}

我陷入困境,无法继续前进。你能帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

如错误消息中所述,INSERT,UPDATE和DELETE等操作通常不适用于executeQuery方法,该方法旨在用于返回结果集的语句。您应该使用executeUpdate代替。