2011-01-12 158 views
1

我有一個字符串數組,我需要將其解析爲長變量。將字符串[]轉換爲逗號分隔的字符串。

字符串數組包含值爲[「9」,「8」]等 我想將其轉換爲「(9,8)」(我在SQL語句的「IN」子句中使用它)。

什麼是實現這一目標的好方法?

這裏是我的代碼:

String[] statusIdArray; 
long statsId = Long.parseLong("("); 
statsId = Long.parseLong(statusIdArray[0]); 
    for(int i=1; i < len; i++) { 
    statsId = Long.parseLong(statsId + ",") statsId=Long.parseLong(statsId + statusIdArray[i]); 
    statsId = Long.parseLong(statsId + ")"); 
    } 

但我得到一個NumberFormatException異常at input string "(9"

+0

我編輯這一關的下面的一些意見。需要檢查的一件事是,你是用`long []`還是`string []`開始的?或者,也許我完全搞砸了。在這種情況下,恢復它:)指定正在使用哪個SQL語句(例如通過提供某些代碼)將有助於清除問題/任務。 – 2011-01-12 07:00:17

+0

我認爲你應該改寫你的問題而不使用「long」這個詞,因爲這會讓人感到困惑。我懷疑答案更符合Java版本的String.Join – 2011-01-12 07:08:06

+0

請更新您的問題,使它是連貫的。我已經提交了一些評論中的代碼。 – 2011-01-13 03:45:56

回答

0

你是什麼人的? 「解析此字符串數組,只要(9,8)」

你有一個字符串數組嗎?或者只是一個字符串?你想每個數字(用逗號分隔)輸入到一個Long數組中嗎?或者你想讓(9,8)成爲一個長「98」?

+0

我希望每個數字用逗號分隔,並將其作爲長變量傳遞 – prasanna 2011-01-12 06:56:27

0
// digits is your array 
String result = "IN ("; 
for (int i = 0; i < digits.length; i++) { 
    result += digits[i] + (i != digits.lenght - 1) ? ", " : ""; 
} 

result += ")"; 

我想我現在就明白了。

您必須小心數組的內容,您可能會成爲SQL注入攻擊的受害者。

+0

我有一個字符串數組,它由digits.say爲例(9 8)我必須將這個字符串數組作爲長變量傳遞給「IN 「sql.it的子句應該像(9,8)當long被傳遞時 – prasanna 2011-01-12 06:55:27

0

問題是有點不清楚,但也許

long[] result = new long[ strings.length ]; 
for (int i=0; i<result.length; i++){ 
    result[i] = Long.parseLong(strings[i]); 
} 

我有一個字符串數組其中包括digits.say例的(9 8)我必須通過這個字符串數組作爲長可變的「 IN」 sql.it的條款應該是這樣的(9,8)在長傳遞

在這種情況下使用Jakarta Commons StringUtils(或別的東西,用連接方法)

sql.append("IN ("); 
sql.append(StringUtils.join(strings, ',')); 
sql.append(")"); 

我通常也完全反對將變量直接插入到SQL中(您應該使用綁定變量),但對於可變長度的IN列表來說這有點棘手。只要確保你沒有在該數組中出現奇怪的數據。

1

假設的問題是:我有我要轉換爲SQL符號,所以我可以在SQL查詢中使用這些字符串數組:

import java.util.Arrays; // may need to add this import somewhere among your import statements 

/** 
* Convert Java String[] to SQL array with varargs syntax. 
* Example method invocations:<blockquote><pre> 
* String sql1 = toSQLArray("1","2","3"); // should return "(1,2,3)" 
* String sql2 = toSQLArray(new String[] { "0", "5" }); // should return "(0,5)" 
* </pre></blockquote> 
* @param array string array. 
* @return String created by concatenating each array element using "," as separator and 
* adding "(" and ")" as delimiters for the result. 
*/ 
public String toSQLArray(String... array) { 
    StringBuilder sb= new StringBuilder(Arrays.toString(array)); 
    sb.replace(0,1, "("); 
    int l = sb.length(); 
    sb.replace(l-1, l, ")"); 
    return sb.toString(); 
} 
相關問題