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

Я запрос information_schema.columns таблица в моей базе данных PostgreSQL. Используя имя таблицы, результирующий набор находит все имена столбцов, тип и является ли он nullable (за исключением первичного ключа, "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();
}

3 ответов


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

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

как пояснил здесь

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


обобщить массив на объект

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

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

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

type[i].toString();

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

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