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 SimplePreparedStatement extends AbstractPreparedBatchStatement
40 {
41
42
43
44
45 private static final Logger logger = LoggerFactory.getLogger(SimplePreparedStatement.class);
46
47 private int _index;
48 private int _result;
49
50 public SimplePreparedStatement(String sql, Connection connection)
51 throws SQLException
52 {
53 super(sql, connection);
54 _index = 0;
55 _result = 0;
56 }
57
58
59
60
61 public void addValue(Object value, DataType dataType)
62 throws TypeCastException, SQLException
63 {
64 logger.debug("addValue(value={}, dataType={}) - start", value, dataType);
65
66
67 if (value == null || value == ITable.NO_VALUE)
68 {
69 _statement.setNull(++_index, dataType.getSqlType());
70 return;
71 }
72
73 dataType.setSqlValue(value, ++_index, _statement);
74 }
75
76 public void addBatch() throws SQLException
77 {
78 logger.debug("addBatch() - start");
79
80 boolean result = _statement.execute();
81 if (!result)
82 {
83 _result += _statement.getUpdateCount();
84 }
85 _index = 0;
86 }
87
88 public int executeBatch() throws SQLException
89 {
90 logger.debug("executeBatch() - start");
91
92 int result = _result;
93 clearBatch();
94 return result;
95 }
96
97 public void clearBatch() throws SQLException
98 {
99 logger.debug("clearBatch() - start");
100
101 _index = 0;
102 _result = 0;
103 }
104
105 }
106
107
108
109
110
111