[英]java printing out an arraylist to build a sql sting
我正在嘗試使用數組列表中的一組值來構建SQL語句。 我將從頭開始。
定義我的arrayList
ArrayList<String[]> myRecords = new ArrayList<String[]>();
定義我的數組字符串:
String[] record = new String[2];
然后我遍歷一個文件並在逗號上分割並將記錄添加到myRecords
while(scan.hasNext())
{
record = scan.nextLine().split(",");
myRecords.add(record);
}
所以現在我需要創建一個SQL導入語句,並在arraylist中使用thoes值。 例如。
String sql = "insert into table (parm1, parm2) Values ";
現在,我想循環遍歷數組,並填寫param1&param2。
for(String[] list : myRecords)
{
sqlString +=("(");
for(String list1 : list)
{
sqlString +=("'"+ list1+ "',");
}
sqlString+=("),");
}
sqlString += ';';
logger.info(sqlString);
現在的問題是,當我打印出SQL字符串時,它看起來像這樣。
insert into table (parm1, parm2) Values ('value1','value2',),('value3','value4',),;
等等等等。
因此,問題在於value2和value4的末尾有一個多余的逗號。 並且在最后一個括號之后; 我已經在其他地方切換了,但是我似乎無法弄清楚如何獲得正確格式的sql字符串。
這就是它的外觀。
insert into table (parm1, parm2) Values ('value1','value2'),('value3','value4');
也許這就是我形成for循環的方式。 任何建議都很好!
添加一個計數器並將其初始化為0,在添加值后遞增計數器。 僅當計數器大於0時才添加逗號
int recCount = 0;
for(String[] list : myRecords)
{
if (recCount > 0)
{
sqlString += ",";
}
sqlString +=("(");
int count = 0
for(String list1 : list)
{
if (count > 0)
{
sqlString += ",";
}
sqlString += "'"+ list1+ "'";
count++;
}
sqlString+=(")");
recCount++;
}
通常,構建SQL字符串不是一個好主意,並且是主要的安全風險
只是:
boolean first = true;
for(String[] list : myRecords) {
if(first) {
first = false;
} else {
sqlString += ',';
}
sqlString +=("(");
for(String list1 : list) {
sqlString +=("'"+ list1+ "',");
}
sqlString+=(")"); // no more "'"
}
sqlString += ';';
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.