web-dev-qa-db-fra.com

Convertir un jeu de résultats d'un tableau SQL en un tableau de chaînes

J'interroge la table information_schema.columns Dans ma base de données PostgreSQL. À l'aide d'un nom de table, le jeu de résultats recherche tous les noms de colonnes, le type et s'il est nullable (à l'exception de la clé primaire, "id"). C'est la requête utilisée:

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 pour chacun de ces résultats et j'essaie d'utiliser la méthode ResultSet getArray(String columnLabel) pour éviter de parcourir les résultats. Je souhaite stocker les tableaux renvoyés dans les tableaux de chaînes, mais j'obtiens une erreur de non-correspondance de type

Type mismatch: cannot convert from Array to String[]

Existe-t-il un moyen de convertir ou de transtyper 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();
}
26
Matt

Utilisation:

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

Comme expliqué ici

Array est de type SQL, getArray() renvoie un objet à convertir en Java tableau.

42
BobTheBuilder

Généraliser le tableau en objet

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

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

Utilisez-le en boucle comme chaîne:

type[i].toString();
4
TheWhiteRabbit

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()));
}
3
yglodt

cela peut être utile

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);
                }

            }

        }
2
Rajeev Ranjan
Object[] balance = (Object[]) tableObject.getArray();

ici table Object est un tableau de type table provenant d'un appel de procédure DB dans l'implémentation dao. après avoir besoin de l'analyser.

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);
         }
   }
}
2
Rajeev