Преобразование результирующего набора из массива 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()));
}