2015-05-13 102 views
-1

以下是我的建议,但最终我会得到,的问题。例如,我将有:如何创建一个参数化的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 += ")"; 

回答

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)); 

结果:

创建表(字段1个VARCHAR(50)不为空,场2 VARCHAR(45)不为空);

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))?",":""); 
} 
+0

投票原因将有所帮助。 – Titus

+0

但最后你会得到一个“,”? –

+0

@ChawqiHajar否,因为这会在列描述的开始处添加','而不是在末尾,并且它不会为第一列描述做到这一点。 – Titus

1

你只需要使用下面的代码

if(i<db.getColumns_number()){ 
    //add "," 
} 
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+=")"; 
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 += ")"; 

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

相关问题