JdbcTemplate,MySQL错误

JdbcTemplate,MySQL错误,mysql,jdbc,Mysql,Jdbc,需要帮助!我之前在这里问过一个问题-与此相关,但不完全相同(不确定SO针对此类问题的协议)。我在使用JDBC、MySQL时遇到了错误。首先是守则 public User find(String login) { System.out.println("Trying to find the user...." + login); User user = this.jdbcTemplate.queryForObject( "select * from xyz wher

需要帮助!我之前在这里问过一个问题-与此相关,但不完全相同(不确定SO针对此类问题的协议)。我在使用JDBC、MySQL时遇到了错误。首先是守则

public User find(String login) {
  System.out.println("Trying to find the user...." + login);    
  User user = this.jdbcTemplate.queryForObject(
        "select * from xyz where user_name = ?",
        new Object[]{login},
        new RowMapper<User>() {
            public User mapRow(ResultSet rs, int rowNum) throws SQLException {
                User user = new User();
                user.setId(Long.valueOf(rs.getInt(1)));
                user.setUserName(rs.getString(2));
                user.setPassword(rs.getString(3));
                return user;
            }
        });
  System.out.println("Found user..." + user);
   return user;
}

public void create(User user) {

    this.jdbcTemplate.update("INSERT INTO xyz (user_name,user_password) VALUES (default, default, ?, ?)",
            new Object[] {user.getUserName(),user.getPassword()});
我在没有“默认”、“默认”的情况下尝试了它,但这给了我另一个错误

SEVERE: Servlet.service() for servlet appServlet threw exception
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your  

SQL syntax; check the manual that corresponds to your MySQL server version for the   

right syntax to use near '?,?)' at line 1

您的列列表只有2列,您正在尝试插入4个值

INSERT INTO xyz (user_name,user_password) VALUES (default, default, ?, ?)

如果列具有默认值且未在列列表中指定,请删除
default
值。

Thx:)我刚刚编辑了问题,以指示在没有“default”的情况下尝试时出现的错误,而只是(?)。MySQL表没有这些列的默认值。@user2480526此时您已更改了问题。你的列名真的是
user\u name
user\u password
?如果使用的是,请确保正确转义列。这是SQLSTMT。对于表-创建表
user
user\u id
int(11)非空自动增量,
user\u name
varchar(100)非空,
user\u密码
varchar(100)非空,主键(
user\u id
)引擎=InnoDB自动增量=9默认字符集=1;
INSERT INTO xyz (user_name,user_password) VALUES (default, default, ?, ?)