【发布时间】:2021-01-07 06:11:43
【问题描述】:
我正在尝试使用 Spring 应用程序中的数据访问对象运行查询,但我收到 String index out of range 错误。
这是我的 DAO
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 方法,我仍然会收到错误
【问题讨论】:
-
您确定使用正确的驱动程序实现吗?您将问题标记为“mysql”,但在堆栈跟踪中我看到了 oracle 驱动程序
-
这能回答你的问题吗? String out of index with SQL developer
-
一个题外话的建议是使用
PreparedStatement来构建查询,避免自己为 SQL 查询连接字符串。这可能导致 SQL 注入攻击。 docs.oracle.com/javase/tutorial/jdbc/basics/prepared.html -
原来我使用了错误的 DRIVER 实现。我按照本教程spring.io/guides/gs/accessing-data-mysql 进行操作,现在一切正常。谢谢!