如何创建一个可参数化的sql请求来创建包含许多字段的表

时间:2015-05-13 11:05:21

标签: java sql

这是我的建议,但最终我会遇到问题,。例如,我将:

create table(field 1 varchar(50) not null,field 2 varchar(45) not null,); 

我的问题是如何删除最后, ???

String req = "CREATE TABLE " + db.getTable_Name() + " (";
for (int i = 0; i < db.getColumns_number(); i++) {
    req += db.getField() + " " + db.getType() + "(" + db.getSize() + ")" + " " + db.getNullabilité () + ",";
}

req += ")";

5 个答案:

答案 0 :(得分:1)

您只需使用以下代码

if(i<db.getColumns_number()){
    //add ","
}

答案 1 :(得分:1)

试试这段代码:

String req="CREATE TABLE " +db.getTable_Name()+" (";
         for(int i=0;i<db.getColumns_number();i++){  
             req+= db.getField()+" "+db.getType()+"("+db.getSize()+")" +" "+db.getNullabilité();
             //add comma until is not last column
             if (i < (db.getColumns_number()-1)) {
                req+=",";
             }
         } 

req+=")";

答案 2 :(得分:1)

您只需切换添加逗号的方式即可。例如:

String req = "CREATE TABLE " + db.getTable_Name() + " (";
for (int i = 0; i < db.getColumns_number(); i++) {
    req += (i > 0 ? ", " : "") + db.getField() + " " + db.getType() + "(" + db.getSize() + ")" + " " + db.getNullabilité();
}

req += ")";

这将检查我们是否在第一个索引之后。如果我们在第一个索引之后,我们在开头添加一个逗号。如果它是第一个索引,我们什么都不添加。

答案 3 :(得分:0)

替换最后一个,很容易。没有正则表达式:

String s = "create table(field 1 varchar(50) not null,field 2 varchar(45) not null,);";
int n = s.lastIndexOf(',');
System.out.println(s.substring(0, n) + s.substring(n+1));

结果:

create table(field 1 varchar(50)not null,field 2 varchar(45)not null);

答案 4 :(得分:0)

您可以这样做:

 for(int i=0;i<db.getColumns_number();i++){  
       if(i!=0){
          req+=", ";
       }
       req+= db.getField()+" "+db.getType()+"("+db.getSize()+")" +" "+db.getNullabilité();
       //req+= ((i!=0)?", ":"") + db.getField()+" "+db.getType()+"("+db.getSize()+")" +" "+db.getNullabilité();
       //req+= db.getField()+" "+db.getType()+"("+db.getSize()+")" +" "+db.getNullabilité() + ((i != (db.getColumns_number()-1))?",":"");
 }