1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 package org.dbunit.database.statement;
23
24 import org.slf4j.Logger;
25 import org.slf4j.LoggerFactory;
26
27 import org.dbunit.dataset.ITable;
28 import org.dbunit.dataset.datatype.DataType;
29 import org.dbunit.dataset.datatype.TypeCastException;
30
31 import java.sql.Connection;
32 import java.sql.SQLException;
33
34
35
36
37
38
39 public class PreparedBatchStatement extends AbstractPreparedBatchStatement
40 {
41
42
43
44
45 private static final Logger logger = LoggerFactory.getLogger(PreparedBatchStatement.class);
46
47 private int _index;
48
49 PreparedBatchStatement(String sql, Connection connection)
50 throws SQLException
51 {
52 super(sql, connection);
53 _index = 0;
54 }
55
56
57
58
59 public void addValue(Object value, DataType dataType)
60 throws TypeCastException, SQLException
61 {
62 logger.debug("addValue(value={}, dataType={}) - start", value, dataType);
63
64
65 if (value == null || value == ITable.NO_VALUE)
66 {
67 _statement.setNull(++_index, dataType.getSqlType());
68 return;
69 }
70
71 dataType.setSqlValue(value, ++_index, _statement);
72 }
73
74 public void addBatch() throws SQLException
75 {
76 logger.debug("addBatch() - start");
77
78 _statement.addBatch();
79 _index = 0;
80 }
81
82 public int executeBatch() throws SQLException
83 {
84 logger.debug("executeBatch() - start");
85
86 int[] results = _statement.executeBatch();
87 int result = 0;
88 for (int i = 0; i < results.length; i++)
89 {
90 result += results[i];
91 }
92 return result;
93 }
94
95 public void clearBatch() throws SQLException
96 {
97 logger.debug("clearBatch() - start");
98 _statement.clearBatch();
99 }
100 }
101
102
103
104
105
106
107