Ваш связанный список, вероятно, должен содержать что-то отличное от String
. Рассматривали ли вы создание класса Binding
, который знает, как настроить значения в вашем подготовленном состоянии? Я предполагаю что-то вроде этого:
public abstract class Binding {
public abstract void bind(PreparedStatement ps) throws SQLException;
}
public class IntegerBinding extends Binding {
private int value;
private int index;
public IntegerBinding(int _index, int _value) {
index = _index;
value = _value;
}
public void bind(PreparedStatement ps) throws SQLException {
ps.setInt(index, value);
}
}
Вы можете использовать значение, которое вы пытаетесь применить к PreparedStatement
, и индекс к PreparedStatement
, чтобы создать конкретную реализацию Binding
. Конечно, вам нужно написать свои собственные Binding
подклассы, чтобы охватить другие типы данных, которые вы хотите использовать.
Вот небольшая модификация вашего кода, чтобы можно было использовать приведенные выше идеи:
public void insertar(String tabla, List<Binding> bindings)
{
String alta = "insert into " + tabla + " values(";
for(int i = 0; i < datos.size(); i++) {
alta = alta + "?,";
}
alta = alta.substring(0, alta.length() - 1) + ")";
System.out.println(alta);
try
{
PreparedStatement insertar = con.prepareStatement(alta);
for(Binding binding : bindings)
{
binding.bind(insertar);
}
insertar.execute();
}
catch (SQLException ex)
{
}
}
Я думаю, что это довольно удобное решение, и я надеюсь, что оно вам поможет. Удачи!