2011-01-12 159 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(); 
} 
相关问题