2015-05-13 44 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 += ")"; 

這將檢查我們是否在第一個索引之後。如果我們在第一個索引之後,我們會在開始時添加一個逗號。如果它是第一個索引,我們什麼也不加。

相關問題