Я хочу заполнить таблицу, используя инструкцию insert. Чтобы получить данные, я использовал массивы, содержащие нужные мне данные.Вставить в таблицу DB java
Я хочу вставить id и некоторые другие значения в этом формате.
id w0 w1 w2 w3
1 0.0 1.0 0.54 0.0
2 1.0 0.5 0.0 0.8
and others
идентификатор ---> читать из нормального массива
другие цифры ---> читать из 2d массива
и я хочу для каждой новой строки нового идентификатора.
Проблема заключается в том, что строки перемещаются и увеличиваются, в то время как идентификатор застрял в 0, поэтому каждая новая строка добавляется с тем же идентификатором, что неверно, поскольку идентификатор является первичным ключом.
String sqlselect=new String("select k_id from keywordsTable");
ResultSet rss = stmt1.executeQuery(sqlselect);
kId=new String[numOfFields];
String f="";
String ff="";
String ffff="";
for (int i=0;i<kId.length;i++) {
while(rss.next())
{
kId[i]=rss.getString(1);
f="w"+kId[i]+ " varchar(20)";
ff+="w"+kId[i]+", ";
ffff+="w"+kId[i]+", ";
//fff+="w"+kId[i]+ " varchar(20), ";
String sqlalter=new String("ALTER TABLE "+ tableName +" add "+f+"");
//System.out.println(sqlalter);
stmt1.executeUpdate(sqlalter);
}
}
ff = ff.replaceAll(", $","");
ffff = ffff.replaceAll(", $","");
String sqlselectF=new String("select f_id from filesTable");
ResultSet rssF = stmt1.executeQuery(sqlselectF);
FId=new String[numOfFiles];
String matInsert = null;
String g="";
String seperator = "";
for (int s=0;s<FId.length;s++) {
while(rssF.next())
{
FId[s]=rssF.getString(1);
g=seperator+FId[s];
for (int k=0;k<di.mat.length;k++) { //row
String m="";
String sep = "";
for (int j=0;j<di.mat[k].length;j++) { //col
m+= (sep+di.mat[k][j]);
sep = " ,";
matInsert=new String("INSERT INTO "+ tableName +"(id,"+ffff+")"+"values" +"("+g+","+m+")");
} //col
System.out.println("ff="+g);
System.out.println(matInsert);
stmt1.executeUpdate(matInsert);
} //row
} //while
} //for 1
seperator=" ,";
Вы не увеличивающиеся или установка 'G' в вашей трети для цикла. –
Не относится к вопросу, но все еще важно: имена, которые вы выбрали для переменных, ужасны (FId, rssF, di, mat, g, sep, m, ffff ...), вы должны подумать о том, чтобы добавить дополнительную мысль в выборе более значимых имена. – alfasin
@alfasin большое спасибо за совет. Я знаю, что я не пользуюсь хорошими именами, они временные, я поменяю их, когда закончу кодирование – Souad