【发布时间】:2015-08-10 10:41:22
【问题描述】:
下面的方法是向sqlite数据库表中插入记录,我知道这个方法会在循环内部被多次调用。
我的问题是,下面的代码是将值插入 DB 表的最佳方法吗?或者可能有更好的方法,因为时间和性能很重要。
请指教。
代码:
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();
}
【问题讨论】:
-
您没有正确使用批处理。您可以传递多个值并准备批处理并执行一次。现在您正在批量添加单个查询并执行它。
-
@NamanGala 请你提供一个例子。
-
而不是传递单个姓名,年龄,地址,性别,传递dto的列表。在那个 dto 中,您可以设置这 4 个值。然后在您的方法中迭代该列表并在迭代中执行 addBatch 并在迭代结束后调用 executeBatch。
-
@NamanGala dto 是什么??
-
dto 是数据传输对象。它是简单的 pojo(普通的旧 java 对象),具有属性(姓名、年龄、地址、性别)以及 getter 和 setter