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