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