[英]insert into DB table 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
id --->从普通数组读取
其他数字--->从二维数组中读取
我想要为每个新行添加一个新ID。
我的问题是ID固定为0时,行正在移动和递增,因此每个新行都添加了相同的ID,这是错误的,因为ID是主键。
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=" ,";
您不应该插入ID,将列配置为AUTO_INCREMENT,然后让MySQL在每个INSERT上分配ID。
其次,在for
循环中嵌套while
循环可能是一个逻辑错误。
第三,在您发布的代码中的任何地方都没有声明ffff
。
第四,INSERT查询在某些地方缺少空格,它将以如下形式出现(如果所有输入正确):
INSERT INTO tableName(id,ffff)values(x,y)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.