package pl.shockah.shocky.sql;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.*;
public class QueryInsert extends Query {
private final String table;
private final String[] keys = new String[8];
private final Object[] values = new Object[8];
private int inspos = 0;
public QueryInsert(String table) {
this.table = table;
}
public void add(String column, Object value) {
int pos = inspos;
boolean inc = true;
for (int i = 0; i <keys.length; i++) {
if (keys[i] != null && keys[i].equals(column)) {
pos = i;
inc = false;
break;
}
}
keys[pos] = column;
values[pos] = value;
if (inc)
inspos++;
}
public String getSQLQuery() {
String clauseColumns = getColumnsClause(Arrays.asList(keys));
String clauseValues = getValuesObjectClause(Arrays.asList(values));
return "INSERT INTO "+table+" ("+clauseColumns+") VALUES("+clauseValues+")";
}
public PreparedStatement getSQLQuery(Connection con) {
StringBuilder sb = new StringBuilder("INSERT INTO ");
sb.append(table).append('(');
int i = 0;
for (; i < keys.length; i++) {
if (keys[i] == null) break;
if (i > 0) sb.append(',');
sb.append(keys[i]);
}
sb.append(") VALUES(");
for (; i>=1;i--) {
sb.append('?');
if (i > 1) sb.append(',');
}
sb.append(')');
PreparedStatement p = null;
i=0;
try {
p = con.prepareStatement(sb.toString());
for (; i < values.length; i++) {
if (keys[i] == null) break;
p.setObject(i+1, values[i]);
}
} catch (SQLException e) {
e.printStackTrace();
}
return p;
}
}