Convertir un ensemble de résultats de tableau SQL en tableau de chaînes

je suis en interrogeant l' information_schema.columns table dans ma base de données PostgreSQL. En utilisant un nom de table, le jeu de résultats trouve tous les noms de colonne, le type, et s'il est nul (sauf pour la clé primaire, 'id'). Voici la requête:

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;

j'ai un tableau de chaînes de caractères pour chacun de ces résultats et j'essaye d'utiliser la méthode ResultSet getArray(String columnLabel) pour éviter la boucle à travers les résultats. Je veux stocker les tableaux retournés dans les tableaux de corde, mais obtenir un type inadéquat erreur

Type mismatch: cannot convert from Array to String[]

y a-t-il un moyen de convertir ou de taper L'objet SQL Array en une chaîne[]?

Code Pertinent:

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();
}
18
demandé sur Jeremy 2013-02-18 15:16:26

3 réponses

Utilisation:

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

Comme expliqué ici

Array est de type SQL, getArray() renvoie un objet à lancer à java array.

34
répondu BobTheBuilder 2013-02-18 11:30:39

généraliser le tableau à Object

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

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

Utiliser en boucle comme une chaîne de caractères:

type[i].toString();
3
répondu TheWhiteRabbit 2013-02-18 11:40:06

comment définir une propriété ArrayList à partir D'un tableau SQL:

Array a = rs.getArray("col"); // smallint[] column
if (a != null) {
    yourObject.setListProperty(Arrays.asList((Integer[]) a.getArray()));
}
1
répondu yglodt 2017-03-17 08:18:17