下面的方法是将记录插入sqlite数据库表,我知道这个方法将从内部循环中多次调用。
我的问题是,下面的代码是将值插入数据库表的最佳方法吗?或者可能有更好的方法,因为时间和性能很重要。
请帮忙。码:
public void insertValues(String name, int age, String address, String gender) throws SQLException, ClassNotFoundException {
Connection conn = getConnection();
PreparedStatement ps = conn.prepareStatement("insert into "+TABLE_NAME+" ("+COL_1+", "+COL_2+", "+COL_3+", "+COL_4+") values (?, ?, ?, ?)");
ps.setString(1, name);
ps.setLong(2, age);
ps.setString(3, address);
ps.setString(4, gender);
ps.addBatch();
ps.executeBatch();
ps.close();
conn.close();
}
答案 0 :(得分:1)
您应该使用连接池,而不是为每个插入打开新连接。为每个查询创建全新的连接会增加显着的开销 - 在大多数情况下,打开连接所需的时间比实际的查询执行时间长。
如果您使用的是Spring,请考虑使用Spring Boot,然后查看http://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-sql.html#boot-features-connect-to-production-database了解详细信息。
Spring boot会自动为您配置连接池 - 您只需要将jar添加到classpath。有关详细教程,请参阅 https://spring.io/guides/gs/relational-data-access/ JdbcTemplate提供了访问SQL数据库的好方法(您也可以考虑使用Spring Data,它更容易)。