插入到DB表java中

时间:2014-06-22 07:43:23

标签: java mysql arrays insert

我想使用insert语句填充表。为了获取数据,我使用了包含我需要的数据的数组。

我想以这种格式插入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=" ,";

1 个答案:

答案 0 :(得分:1)

您不应插入ID,将列配置为 AUTO_INCREMENT ,并让MySQL在每次INSERT时分配ID。

其次,在while循环内嵌套for循环可能是一个逻辑错误。
第三,ffff未在您发布的代码中的任何位置声明 第四,INSERT查询在几个地方缺少空格,它会出现(如果所有输入都是正确的),如下所示:

INSERT INTO tableName(id,ffff)values(x,y)