0

我正在编写一个允许用户使用用户输入创建自定义 SQL 查询的应用程序。

我使用将每个 JTextFields 的值添​​加到数组中

for(JTextField field : fields){
 if (!field.getText().equals("")){
   rows.add(field.getText());
 }
}

当我输出一个数组时,它被包裹在方括号中

[arVal1, arVal2, etc, etc]

因此,当我将数组插入查询字符串时,它看起来像这样:

INSERT INTO table ([arval1, arval2, arVal3]) VALUES ([bla, bla, bla])

当我出于某种原因运行查询时,我得到:ORA-00928:缺少 SELECT 关键字错误;但是如果我有查询的默认字符串,例如:

INSERT INTO table (arval1, arval2, arVal3) VALUES (bla, bla, bla)

它工作正常。

我希望在输出数组时摆脱 []

谢谢你

4

3 回答 3

2

你不应该依赖toString数组的方法。

使用番石榴,尝试Joiner.on(",").join(myArray);

于 2010-11-29T17:24:00.827 回答
1

如果你不能使用番石榴(但我推荐它:))

StringBuilder builder = new StringBuilder();
builder.add("INSERT INTO table (");
for(int i=0; i<rows.length: rows){
   builder.add(row);
   if(i<rows.length -1){
      builder.add(",")
   }
}
builder.add(") VALUES (");
....

为了完成,使用 Guava,它看起来像这样:

Joiner commaJoiner = Joiner.on(", ");
"INSERT INTO table (" + commaJoiner.join(rows) + " VALUES " + commaJoiner.join(values)
于 2010-11-29T17:31:17.850 回答
0

也许是一个过于复杂的解决方案,但尝试覆盖 toString()

 ArrayList<String> rows = new ArrayList<String>()
    {
        public String toString()
        {
            StringBuffer retVal = new StringBuffer();
            for(int i = 0; i < size(); i++)
            {
                retVal.append(this.get(i));
                if(i < size() - 1)
                {
                    retVal.append(",");
                }
            }
            return retVal.toString();
        }
    };
于 2010-11-29T17:27:41.423 回答