Этот код ниже - проблема,
for(int j=0; j <a.length; j++){
ps.setString(4,a[j]);
out.println("selected values are"+a[j]);
}
вы установили значение счетчика на - 4, и поэтому вы получаете только последнее значение.
Поскольку вы заранее не знаете количество флажков, вам необходимо динамически построить запрос, используя StringBuilder
и в конце добавить к запросу a.length
вопросительные знаки.
Затем при установке значений в PreparedStatement
необходимо взять int counter
и увеличить его после значения настройки.
ps.setInt(1,id);
ps.setString(2,fname);
ps.setString(3,lname);
ps.setString(4,age_brackets);
ps.setString(5, living_arngmt);
ps.setString(6,dob);
int counter = 7; //since six question marks are already added for other fields
for(int j=0; j <a.length; j++){
ps.setString(counter++,a[j]);
out.println("selected values at index : "+j+" is : "+a[j]);
}
или вы можете инициализировать counter = 1
и начинать с начала, как,
int counter = 1;
ps.setInt(counter++,id);
ps.setString(counter++,fname);
ps.setString(counter++,lname);
ps.setString(counter++,age_brackets);
ps.setString(counter++, living_arngmt);
ps.setString(counter++,dob);
; //since six question marks are already added for other fields
for(int j=0; j <a.length; j++){
ps.setString(counter++,a[j]);
out.println("selected values at index : "+j+" is : "+a[j]);
}