ArrayList<Objects[]> 到要在 SQL IN 语句中使用的字符串
ArrayList<Objects[]> to strings to use in SQL IN statement
我正在尝试构建一个字符串以将其作为 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。但是事情似乎不起作用。
关于问题出在哪里的任何输入?
你应该在你的对象中覆盖方法 toString
您可以使用 SQL 具体 java Array
。
try (PreparedStatement stmt = connection.prepareStatement("... IN (?) ...")) {
Object[] elements = ...
stmt.setArray(1, connection.createArray("TEXT", elements));
stmt.executeUpdate();
}
您遇到的问题是您在 ArrayList
中隐含地使用了 Object
元素的 toString()
方法。默认情况下,该方法 returns class 和地址 Object
。您应该在列表中使用的每个 class 中覆盖 toString()
方法,这样它 returns 就是您想要的。
您可以将其保存为 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);
或者您想要它用于特定目的?
这是可能有用的新代码,
// Data of Array of Object for test the Code
Object[] a = new Object[1];
a[0] = "Hello";
Object[] b = new Object[1];
b[0] = "Friend";
Object[] c = new Object[1];
c[0] = "This is";
Object[] d = new Object[1];
d[0] = "Just Test";
// The Array List of objects and the data entry
ArrayList<Object[]> arrayList = new ArrayList<Object[]>();
arrayList.add(a);
arrayList.add(b);
arrayList.add(c);
arrayList.add(d);
// New List of strings
List<String> strings = new ArrayList<>(arrayList .size());
// The Process of adding the data from array list of objects to the strings
for(int i = 0; i < arrayList.size(); i++){
strings.add((String) arrayList.get(i)[0]);
}
// Just for print the data to console
for(int i = 0 ; i < strings.size(); i++){
System.out.println(strings.get(i));
}
System.out.println("askldnlkasdn "+strings.get(0));
希望能解决问题,如果不行请告知,可以用于多维数组.
我正在尝试构建一个字符串以将其作为 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。但是事情似乎不起作用。
关于问题出在哪里的任何输入?
你应该在你的对象中覆盖方法 toString
您可以使用 SQL 具体 java Array
。
try (PreparedStatement stmt = connection.prepareStatement("... IN (?) ...")) {
Object[] elements = ...
stmt.setArray(1, connection.createArray("TEXT", elements));
stmt.executeUpdate();
}
您遇到的问题是您在 ArrayList
中隐含地使用了 Object
元素的 toString()
方法。默认情况下,该方法 returns class 和地址 Object
。您应该在列表中使用的每个 class 中覆盖 toString()
方法,这样它 returns 就是您想要的。
您可以将其保存为 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);
或者您想要它用于特定目的?
这是可能有用的新代码,
// Data of Array of Object for test the Code
Object[] a = new Object[1];
a[0] = "Hello";
Object[] b = new Object[1];
b[0] = "Friend";
Object[] c = new Object[1];
c[0] = "This is";
Object[] d = new Object[1];
d[0] = "Just Test";
// The Array List of objects and the data entry
ArrayList<Object[]> arrayList = new ArrayList<Object[]>();
arrayList.add(a);
arrayList.add(b);
arrayList.add(c);
arrayList.add(d);
// New List of strings
List<String> strings = new ArrayList<>(arrayList .size());
// The Process of adding the data from array list of objects to the strings
for(int i = 0; i < arrayList.size(); i++){
strings.add((String) arrayList.get(i)[0]);
}
// Just for print the data to console
for(int i = 0 ; i < strings.size(); i++){
System.out.println(strings.get(i));
}
System.out.println("askldnlkasdn "+strings.get(0));
希望能解决问题,如果不行请告知,可以用于多维数组.