我在SpringMVC数据库应用程序中编码。当我尝试使用带参数的JdbcTemplate对象更新方法将数据插入数据库时,我在插入数据时出错。参数编码很好,如下:
String sql = "INSERT INTO contact (name, email, address, telephone)"
+ " VALUES ('" + contact.getName() + "', '" + contact.getEmail() + "', '"
+ contact.getAddress() + "', '" + contact.getTelephone() + "')";
jdbcTemplate.update(sql);
但是当我使用参数时,它会出错:
String sql = "INSERT INTO contact (name, email, address, telephone)"
+ " VALUES (?, ?, ?, ?)";
jdbcTemplate.update(sql, contact.getName(), contact.getEmail(),
contact.getAddress(), contact.getTelephone());
请帮助我!
答案 0 :(得分:1)
你必须修改参数。请查看以下示例。
//insert with named parameter
public void insertNamedParameter(Customer customer){
String sql = "INSERT INTO CUSTOMER " +
"(CUST_ID, NAME, AGE) VALUES (:custId, :name, :age)";
Map<String, Object> parameters = new HashMap<String, Object>();
parameters.put("custId", customer.getCustId());
parameters.put("name", customer.getName());
parameters.put("age", customer.getAge());
getSimpleJdbcTemplate().update(sql, parameters);
}
您可以参考以下链接以供参考。
答案 1 :(得分:0)
使用 SimpleJdbcInsert :
private long addContact(Contact contact) {
SqlParameterSource params = new MapSqlParameterSource()
.addValue("name", contact.getName())
.addValue("email", contact.getEmail())
.addValue("address", contact.getAddress())
.addValue("telephone", contact.getTelephone());
return new SimpleJdbcInsert(DBConnection.getDataSource())
.withTableName("contact")
.usingGeneratedKeyColumns("id")
.executeAndReturnKey(params)
.longValue();
}