Java - 不带格式的输出数组

发布于 2024-10-04 14:41:52 字数 630 浏览 7 评论 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)

它工作正常。

我希望在输出数组时去掉 []

谢谢

I am writing an app that allows the user to create custom SQL queries with user input.

I add the falue from each JTextFields to the array using

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

When i output an array it is wrapped in square brackets

[arVal1, arVal2, etc, etc]

So when i inser the array into the query string it looks like this:

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

When i run the query for some reason i get: ORA-00928: missing SELECT keyword error; but if i have a default string for the query like:

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

it works fine.

Im looking to get rid of the [] when outputting the array

Thank You

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

嗳卜坏 2024-10-11 14:41:52

您不应依赖数组的 toString 方法。

使用 Guava,尝试 Joiner.on(",").join( myArray);

You shouldn't rely on the toString method of the array.

Using Guava, try Joiner.on(",").join(myArray);

逆蝶 2024-10-11 14:41:52

如果你不能使用 Guava(但我推荐它:))

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)

If you cannot use Guava (but I recommend it :) )

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 (");
....

To complete, with Guava, it looks like this:

Joiner commaJoiner = Joiner.on(", ");
"INSERT INTO table (" + commaJoiner.join(rows) + " VALUES " + commaJoiner.join(values)
世态炎凉 2024-10-11 14:41:52

也许是一个过于复杂的解决方案,但尝试覆盖 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();
        }
    };

Maybe an overly complicated solution, but try overriding 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();
        }
    };
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文