KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > polepos > teams > jdbc > drivers > melbourne > BulkWritePreparedStatement


1 /*
2 This file is part of the PolePosition database benchmark
3 http://www.polepos.org
4
5 This program is free software; you can redistribute it and/or
6 modify it under the terms of the GNU General Public License
7 as published by the Free Software Foundation; either version 2
8 of the License, or (at your option) any later version.
9
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 JavaDoc;
23 import java.sql.SQLException JavaDoc;
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 {
37     private final PreparedStatement JavaDoc mStmt;
38
39     /**
40      * Creates a new instance of BulkWriteSingle.
41      */

42     public BulkWritePreparedStatement( JdbcCar car, String JavaDoc tablename )
43     {
44         mStmt = car.prepareStatement( "insert into " + tablename + " (id,Name,FirstName,Points,LicenseID) values (?,?,?,?,?)" );
45     }
46
47     /**
48      * Dump an array of pilots to the DB by writing one-by-one.
49      */

50     public void savePilots(String JavaDoc tablename, Pilot[] p, int count, int index )
51     {
52         try
53         {
54             for ( int i = 0; i < count; i++ )
55             {
56                 savePilot(p[i], index++ );
57             }
58             
59             // mckoi complains with an exception if the batch is empty
60
if ( count > 0 )
61             {
62                 mStmt.executeBatch();
63             }
64         }
65         catch ( SQLException JavaDoc sqlex )
66         {
67             sqlex.printStackTrace();
68         }
69     }
70     
71     
72     /**
73      * Helper:
74      * Write a single pilot to the database.
75      */

76     private void savePilot( Pilot p, int index ) throws SQLException JavaDoc
77     {
78         mStmt.setInt( 1, index );
79         mStmt.setString( 2, p.getName() );
80         mStmt.setString( 3, p.getFirstName() );
81         mStmt.setInt( 4, p.getPoints() );
82         mStmt.setInt( 5, p.getPoints() );
83         mStmt.addBatch();
84     }
85 }
86
Popular Tags