字符串索引超出范围。Java Spring启动

字符串索引超出范围。Java Spring启动,java,mysql,spring,jdbc,Java,Mysql,Spring,Jdbc,我试图在Spring应用程序中使用数据访问对象运行查询,但我得到一个字符串索引超出范围错误 这是我的刀 public class UserDao { private JdbcTemplate jdbcTemplate; public void setJdbcTemplate(JdbcTemplate jdbcTemplate){ this.jdbcTemplate = jdbcTemplate; } public int saveUser(User u

我试图在Spring应用程序中使用数据访问对象运行查询,但我得到一个字符串索引超出范围错误

这是我的刀

public class UserDao {

   private JdbcTemplate jdbcTemplate;

   public void setJdbcTemplate(JdbcTemplate jdbcTemplate){
       this.jdbcTemplate = jdbcTemplate;
   }

   public int saveUser(User u){
    
     String query = "INSERT INTO `users` VALUES('"+u.getFirstName()+"','"+u.getLastName()+"','"
         +u.getEmail()+"','"+u.getCreatedAt()+"','"+u.getCreatedBy()+"','"+u.getUpdatedAt()+"','"+u.getUpdatedBy()+"')";
 
    return jdbcTemplate.update(query);
  }

}
这就是错误所在

这是我的数据库表结构


即使用实际值替换getter方法,仍然会出现错误

请尝试使用以下语法:

String.format("INSERT INTO USERS(first_name, last_name, etc...) VALUES(%s, %s, etc...);
它将返回由
string.format()
方法动态创建的字符串

因为如果没有定义列名,则必须保持值的顺序,这可能是错误的,因为缺少id列


p.S.%d-代表数字,%S-代表字符串

您确定使用了正确的驱动程序实现吗?您将问题标记为“mysql”,但在stacktrace中,我看到oracle驱动程序这是否回答了您的问题?有一点离题的建议是使用
PreparedStatement
构建查询,避免将字符串连接到SQL查询中。这可能导致SQL注入攻击。结果证明我使用了错误的驱动程序实现。我遵循了本教程,现在一切正常。谢谢