01: /*
02: This file is part of the PolePosition database benchmark
03: http://www.polepos.org
04:
05: This program is free software; you can redistribute it and/or
06: modify it under the terms of the GNU General Public License
07: as published by the Free Software Foundation; either version 2
08: of the License, or (at your option) any later version.
09:
10: This program is distributed in the hope that it will be useful,
11: but WITHOUT ANY WARRANTY; without even the implied warranty of
12: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13: GNU General Public License for more details.
14:
15: You should have received a copy of the GNU General Public
16: License along with this program; if not, write to the Free
17: Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
18: MA 02111-1307, USA. */
19:
20: package org.polepos.teams.jdbc.drivers.melbourne;
21:
22: import java.sql.PreparedStatement;
23: import java.sql.SQLException;
24:
25: import org.polepos.data.*;
26: import org.polepos.teams.jdbc.*;
27:
28: /**
29: *
30: * @author Herkules
31: *
32: * Typical:
33: * 50000 objects: write 4703ms (0.09406ms/object), read 172ms (0.00344ms/object), delete 0ms (0.0ms/object)
34: */
35: public class BulkWritePreparedStatement implements BulkWriteStrategy {
36: private final PreparedStatement mStmt;
37:
38: /**
39: * Creates a new instance of BulkWriteSingle.
40: */
41: public BulkWritePreparedStatement(JdbcCar car, String tablename) {
42: mStmt = car
43: .prepareStatement("insert into "
44: + tablename
45: + " (id,Name,FirstName,Points,LicenseID) values (?,?,?,?,?)");
46: }
47:
48: /**
49: * Dump an array of pilots to the DB by writing one-by-one.
50: */
51: public void savePilots(String tablename, Pilot[] p, int count,
52: int index) {
53: try {
54: for (int i = 0; i < count; i++) {
55: savePilot(p[i], index++);
56: }
57:
58: // mckoi complains with an exception if the batch is empty
59: if (count > 0) {
60: mStmt.executeBatch();
61: }
62: } catch (SQLException sqlex) {
63: sqlex.printStackTrace();
64: }
65: }
66:
67: /**
68: * Helper:
69: * Write a single pilot to the database.
70: */
71: private void savePilot(Pilot p, int index) throws SQLException {
72: mStmt.setInt(1, index);
73: mStmt.setString(2, p.getName());
74: mStmt.setString(3, p.getFirstName());
75: mStmt.setInt(4, p.getPoints());
76: mStmt.setInt(5, p.getPoints());
77: mStmt.addBatch();
78: }
79: }
|