字符串索引超出范围。Java Spring启动
我试图在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
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注入攻击。结果证明我使用了错误的驱动程序实现。我遵循了本教程,现在一切正常。谢谢