ArrayList <objects []>到SQL IN语句中使用的字符串

时间:2016-08-11 10:02:39

标签: java sql arraylist sql-in

我正在尝试构建一个字符串,将其作为IN语句中的SQL查询传递。

ArrayList<Object[]> arrayList = new ArrayList<Object[]>();

    List<String> strings = new ArrayList<>(arrayList .size());
    for (Object object : arrayList ) {
        strings.add(Objects.toString(object, null));
    }

    System.out.println("askldnlkasdn"+strings);

这仍会打印出内存位置而不是实际的字符串

askldnlkasdn[[Ljava.lang.Object;@7bb11784, [Ljava.lang.Object;@33a10788, [Ljava.lang.Object;@7006c658, [Ljava.lang.Object;@34033bd0, [Ljava.lang.Object;@47fd17e3, [Ljava.lang.Object;@7cdbc5d3, [Ljava.lang.Object;@3aa9e816, [Ljava.lang.Object;@17d99928, [Ljava.lang.Object;@3834d63f, [Ljava.lang.Object;@1ae369b7]

我也试过了 使用StringBuilder和StringUtils。但事情似乎不起作用。

关于问题所在的任何输入?

5 个答案:

答案 0 :(得分:1)

你应该在对象中覆盖方法toString

答案 1 :(得分:1)

您可以使用特定于SQL的java Array

try (PreparedStatement stmt = connection.prepareStatement("... IN (?) ...")) {
    Object[] elements = ...
    stmt.setArray(1, connection.createArray("TEXT", elements));
    stmt.executeUpdate();
}

答案 2 :(得分:1)

您遇到的问题是您隐含地使用toString()Object元素的ArrayList方法。默认情况下,该方法返回Object的类和地址。您应该在列表中使用的每个类中覆盖toString()方法,以便返回您想要的内容。

答案 3 :(得分:0)

您可以将其另存为String,就像此代码一样

ArrayList<String> arrayList = new ArrayList<>();

    List<String> strings = new ArrayList<>(arrayList .size());
    for (Object object : arrayList ) {
        strings.add(Objects.toString(object, null));
    }

    System.out.println("askldnlkasdn"+strings);

或者您希望Object用于特定用途?

答案 4 :(得分:0)

这是可能有用的新代码,

$(function()
{
  var all_errors = {'E1':0,'E2':0,'E3':0};

    $("[id^='E1_']").click(function(){
        all_errors.E1++;
        console.log('errors', all_errors);
        $.ajax({ url: 'data_insert.php',
            data: {code: 1, btn1: all_errors.E1, btn2: all_errors.E2, btn3: all_errors.E3},
            type: 'post',
            success: function(output) {
                console.log(output);
        }});
    });
});

我希望解决问题,如果没有请通知我,你可以将它用于多个维数组