Подтвердить что ты не робот

Преобразование набора результатов из массива SQL в массив строк

Я запрашиваю таблицу information_schema.columns в моей базе данных PostgreSQL. Используя имя таблицы, результирующий набор находит все имена столбцов, их тип и можно ли их обнулять (кроме первичного ключа 'id'). Этот запрос используется:

SELECT column_name, is_nullable,data_type FROM information_schema.columns
WHERE lower(table_name) = lower('TABLE1') AND column_name != 'id'
ORDER BY ordinal_position;

У меня есть массив строк для каждого из этих результатов, и я пытаюсь использовать метод ResultSet getArray(String columnLabel) чтобы избежать зацикливания результатов. Я хочу сохранить возвращенные массивы в строковых массивах, но получаю ошибку несоответствия типов

Type mismatch: cannot convert from Array to String[]

Есть ли способ преобразовать или типизировать объект массива SQL в строку []?

Соответствующий код:

String[] columnName, type, nullable;

//Get Field Names, Type, & Nullability 
String query = "SELECT column_name, is_nullable,data_type FROM information_schema.columns "
        + "WHERE lower(table_name) = lower('"+tableName+"') AND column_name != 'id' "
        + "ORDER BY ordinal_position";

try{
    ResultSet rs = Query.executeQueryWithRS(c, query);
    columnName = rs.getArray(rs.getArray("column_name"));
    type = rs.getArray("data_type");
    nullable = rs.getArray("is_nullable");
}catch (Exception e) {
    e.printStackTrace();
}
4b9b3361

Ответ 1

Использование:

Array a = rs.getArray("is_nullable");
String[] nullable = (String[])a.getArray();

Как объясняется здесь

Array - это тип SQL, getArray() возвращает объект для преобразования в java-массив.

Ответ 2

Обобщите массив для объекта

    Object[] type; //this is generic can use String[] directly
    Array rsArray;

    rsArray = rs.getArray("data_type");
    type = (Object [])rsArray.getArray();

Используйте его как строку:

type[i].toString();

Ответ 3

Как установить свойство ArrayList из массива SQL:

Array a = rs.getArray("col"); // smallint[] column
if (a != null) {
    yourObject.setListProperty(Arrays.asList((Integer[]) a.getArray()));
}

Ответ 4

это может быть полезно

Object[] balance = (Object[]) ((Array) attributes[29]).getArray();
        for (Object bal : balance) {

            Object [] balObj =(Object[]) ((Array) bal).getArray();
            for(Object obj : balObj){
                Struct s= (Struct)obj;
                if(s != null ){
                    String [] str = (String[]) s.getAttributes();
                    System.out.println(str);
                }

            }

        }

Ответ 5

Object[] balance = (Object[]) tableObject.getArray();

здесь таблица Object - это массив типов таблиц, поступающий из вызова процедуры DB в реализации dao. после того, как нам нужно разобрать это.

for (Object bal : balance) {
   Object [] balObj =(Object[]) ((Array) bal).getArray();
   for(Object obj : balObj){
       Struct s= (Struct)obj;
        if(s != null ){
             String [] str = (String[]) s.getAttributes();
             System.out.println(str);
         }
   }
}