0

ユーザーがユーザー入力を使用してカスタムSQLクエリを作成できるようにするアプリを作成しています。

各JTextFieldsからのfalueを使用して配列に追加します

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

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)
于 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 に答える