Mohamed Nuur
Mohamed Nuur

Reputation: 5645

Java PreparedStatement Syntax

Is this the correct syntax for a prepared statement in java:

INSERT INTO table (id, version, data)
  VALUES (?, ?, ?)
  ON DUPLICATE KEY UPDATE 
    data = IF(version > values(version), data, values(data)),
    version = IF(version > values(version), version, values(version))

I am looking for the best way to insert or update millions of rows from within a for-loop in java taking advantage of PreparedStatement's addBatch.

Upvotes: 1

Views: 3547

Answers (1)

Thomas Mueller
Thomas Mueller

Reputation: 50087

If the SQL statement is correct, you need to wrap it as follows:

String sql = ...
PreparedStatement prep;
prep = conn.prepareStatement(sql);
prep.setInt(1, x);
prep.setString(2, y);
prep.setString(3, z);
prep.execute();

To use addBatch, use:

String sql = ...
PreparedStatement prep;
prep = conn.prepareStatement(sql);
for (...) {
    prep.setInt(1, x);
    prep.setString(2, y);
    prep.setString(3, z);
    prep.addBatch();
}
prep.execute();

Upvotes: 3

Related Questions